内容简介:去年2月我写过一篇kubernets部署备忘,当时基于v1.5.2,现在看有些地方已经跟当前版本对不上了,有读者发邮件来咨询,由于我也很久没部署过k8s了,索性新写一篇教程,重温一下,喜迎九一。本教程:我用的机器是一台老笔记本ThinkPad X201,4核8GB,标准的Java虚机配置,用来跑kubernetes尚可。操作系统是ubuntu 16.04 Desktop版本,更新到最新。这台机器特意没有配置任何翻墙工具。
去年2月我写过一篇kubernets部署备忘,当时基于v1.5.2,现在看有些地方已经跟当前版本对不上了,有读者发邮件来咨询,由于我也很久没部署过k8s了,索性新写一篇教程,重温一下,喜迎九一。
本教程:
- 基于当前1.11.2版本
- 基于ubuntu
- All in ONE
- 绝对不翻墙!
我用的机器是一台老笔记本ThinkPad X201,4核8GB,标准的 Java 虚机配置,用来跑kubernetes尚可。操作系统是ubuntu 16.04 Desktop版本,更新到最新。这台机器特意没有配置任何翻墙工具。
准备工作
更换apt源为163
$ cat /etc/apt/sources.list deb http://mirrors.163.com/ubuntu/ xenial main deb-src http://mirrors.163.com/ubuntu/ xenial main deb http://mirrors.163.com/ubuntu/ xenial-updates main deb-src http://mirrors.163.com/ubuntu/ xenial-updates main deb http://mirrors.163.com/ubuntu/ xenial universe deb-src http://mirrors.163.com/ubuntu/ xenial universe deb http://mirrors.163.com/ubuntu/ xenial-updates universe deb-src http://mirrors.163.com/ubuntu/ xenial-updates universe deb http://mirrors.163.com/ubuntu/ xenial-security main deb-src http://mirrors.163.com/ubuntu/ xenial-security main deb http://mirrors.163.com/ubuntu/ xenial-security universe deb-src http://mirrors.163.com/ubuntu/ xenial-security universe
安装docker
apt install docker.io -y
安装后 docker 版本为17.03.2-ce。
增加kubernetes aliyun镜像源
apt-get update && apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF
安装kubeadm/kubelet/kubectl
apt-get update apt-get install -y kubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl
如果你有多台机器,非master节点不需要安装kubeadm/kubectl。当然装了也没啥坏处。
关闭swap
kubernetes要求必须关闭swap。
这次装机遗憾的地方就是忘记把swap给关掉了。不接受“为啥要关swap啊”的讨论。其实我在公司的台式机是开着的,因为狗日的内存只有8GB,我用的又是deepin,非常耗内存,但服务器上,别开swap,宁死不要swap,用户可没我这么好脾气。
swapoff -a
同时把 /etc/fstab
包含swap那行记录删掉。
配置docker mirror
创建(或修改)/etc/docker/daemon.json。官方中国镜像速度还行。
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
重启docker服务
systemctl restart docker
拉取k8s的包并tag
首先查询下当前版本需要哪些docker image。
$ kubeadm config images list --kubernetes-version v1.11.2 k8s.gcr.io/kube-apiserver-amd64:v1.11.2 k8s.gcr.io/kube-controller-manager-amd64:v1.11.2 k8s.gcr.io/kube-scheduler-amd64:v1.11.2 k8s.gcr.io/kube-proxy-amd64:v1.11.2 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd-amd64:3.2.18 k8s.gcr.io/coredns:1.1.3
必须要指定版本,这样kubeadm才不会去连k8s.io。kubeadm init同理。
推荐使用 anjia0532 的镜像,机器人自动跟官方同步,非常及时。
docker pull anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 docker pull anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 docker pull anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 docker pull anjia0532/google-containers.kube-proxy-amd64:v1.11.2 docker pull anjia0532/google-containers.pause:3.1 docker pull anjia0532/google-containers.etcd-amd64:3.2.18 docker pull anjia0532/google-containers.coredns:1.1.3 docker tag anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 k8s.gcr.io/kube-controller-manager-amd64:v1.11.2 docker tag anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 k8s.gcr.io/kube-apiserver-amd64:v1.11.2 docker tag anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 k8s.gcr.io/kube-scheduler-amd64:v1.11.2 docker tag anjia0532/google-containers.kube-proxy-amd64:v1.11.2 k8s.gcr.io/kube-proxy-amd64:v1.11.2 docker tag anjia0532/google-containers.pause:3.1 k8s.gcr.io/pause:3.1 docker tag anjia0532/google-containers.etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18 docker tag anjia0532/google-containers.coredns:1.1.3 k8s.gcr.io/coredns:1.1.3 docker rmi anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 docker rmi anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 docker rmi anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 docker rmi anjia0532/google-containers.kube-proxy-amd64:v1.11.2 docker rmi anjia0532/google-containers.pause:3.1 docker rmi anjia0532/google-containers.etcd-amd64:3.2.18 docker rmi anjia0532/google-containers.coredns:1.1.3
开始安装master
好了,万事俱备,开始安装master。
kubeadm init --kubernetes-version v1.11.2
我这里准备使用weave Network(主要是想用下weave scope,它只支持weave类型的网络)。
注意如果是flannel网络方案,必须要设置 --pod-network-cidr 10.244.0.0/16
,其他类型的网络,请参考官方的 说明 。
部署weave网络
sysctl net.bridge.bridge-nf-call-iptables=1 -w kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
准备计算资源
因为我只有1个节点,要“计算资源”的话,就只能将master节点的taint去掉,否则普通的Pod默认不会调度上来。
kubectl taint nodes --all node-role.kubernetes.io/master-
如果你有多个节点的话,不需要去掉master的taint。其他节点参照上面的准备阶段在各个节点上做好准备工作以后,只要再Join一下就行了。Join命令在kubeadm init的输出信息里有。
kubeadm join --token={token} {master ip}
安装weave scope
kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"
全程不翻墙!
btw:推荐weave scope,用过以后,就会觉得我们开发的这些管控,太low了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- hyperledger fabric安装教程
- RabbitMQ教程之一:安装及简介
- mac:Go安装和配置+GoLand安装和使用之完整教程
- Android Studio 超详细安装教程
- 恶意软件分析虚拟机OALabs安装教程
- windows安装mongodb服务简洁版教程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java编程思想
埃克尔 / 机械工业出版社 / 2007-5-1 / 79.00元
《Java编程思想(英文版•第4版)》内容简介:特色:1.适合初学者与专业人员的经典的面向对象的叙述方式;为更新的Java SE5/6的相关内容增加了新的示例和章节。2.测验框架显示程序输出。3.设计模式贯穿于众多示例中:适配器、桥接器、职责链、命令、装饰器、外观、工厂方法、享元、点名、数据传输对象、空对象、代理、单例、状态、策略、模板方法以及访问者。4.为数据传输引入了XML;为用户界面引入了S......一起来看看 《Java编程思想》 这本书的介绍吧!