首先我准备了3台CentOS 7 x64的虚拟机,分别对应的角色和IP地址如下:
KS8 10.20.30.63 master
Dcoker01 10.20.30.64 node01
Docker02 10.20.30.55 node02
每一台为了实验的顺利,我都关闭了防火墙和SELinux
Systemctl stop firewalld
Systemctl disable firewalld
Vi /etc/SELinux/config
并且安装了vim
yum install -y vim
以及关闭所有服务器的swap分区:
vim /etc/fstab
把swap这行删除掉后保存
重启虚拟机reboot
接下来需要对每一台添加Host记录,实现主机和IP对应关系,如果您有DNS解析,这一步可以忽略
vim /etc/hosts
接下来为每一台开启网络转发功能
vim /etc/sysctl.conf #插入以下内容
net.ipv4.ip_forward = 1
sysctl -p #生效
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
使配置生效
sysctl --system
接下来再所有服务器上安装Docker,Kubeadm,kubelet
第一个先装docker
yum install -y docker
systemctl start docker
systemctl enable docker
第二个安装kubeadm,kubelet,kybectl
先更新下yum源
yum update -y
设置kubernetes YUM仓库
https://mirrors.aliyun.com/kubernetes/yum/repos/
vim /etc/yum.repos.d/kubernetes.repo
编辑内容如下:
[kubernetes]
name = Kubernetes
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled = 1
gpgcheck = 1
repo_gpgcheck = 1
gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
查看kubernetes可以安装的版本清单
yum list --showduplicates | grep 'kubeadm\|kubectl\|kubelet'
在这里安装1.13.3
yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0-0
所有服务器只设置kubelet开机启动
systemctl enable kubelet
接下来初始化Kubernetes Master(只在K8S服务器上执行)
kubeadm init \
--apiserver-advertise-address=10.20.30.63 \ #master监听的IP地址
--image-repository /google_containers \ #指定一个仓库
--kubernetes-version v1.13.3 \ #指定版本
--service-cidr=10.30.0.0/16 \ #指定service网络IP地址段,负载均衡的虚拟IP
--pod-network-cidr=10.244.0.0/16 #指定pod网络,容器用到的IP地址,这个需要和后面用到的yml匹配一致,如下图
++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
完成后注意执行结果的这段kubeadm join,这是其他节点加入需要的Token
kubeadm join 10.20.30.63:6443 --token mf9dfj.0zaovbosaselcsmq --discovery-token-ca-cert-hash sha256:e06a5190af0a754bed99053eeaac1f419c426b3b9c41d28c187baf08f6ebc19e
生成的证书保存在
然后配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
可以先看看下载下来的镜像kube-apiserver,kue-controller-manager,kube-proxy,kube-scheduler都是1.13.3版本
Docker images
接下来安装Pod网络插件
++++++++++++++++++++++++
建议先执行这部避免出现下面的问题
docker pull quay.io/coreos/flannel:v0.11.0-amd64
+++++++++++++++++++++++
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
再检查下kubectl get pods -n kube-system
再检查下节点状态
kubectl get node
再检查下命名空间
kubectl get pods --all-namespaces或kubectl get pods --all-namespaces -o wide
接下来就是将Node节点加入到集群中
利用上面的这段在每一台node去执行(Docker01和Docker02)
kubeadm join 10.20.30.63:6443 --token mf9dfj.0zaovbosaselcsmq --discovery-token-ca-cert-hash sha256:e06a5190af0a754bed99053eeaac1f419c426b3b9c41d28c187baf08f6ebc19e
加入成功后可以在K8S(master)看到新Node加入
但需要多等下让他们2个节点准备好
其实在等待节点准备好的期间也就是节点也在拉取docker pull quay.io/coreos/flannel:v0.11.0-amd64
接下来测试下集群,创建一个Nginx的image
kubectl create deployment nginx --image=nginx
可以看到也是在拉取nginx的image到运行起来
接下来发布这个Nginx可以让外部访问
kubectl expose deployment nginx --port=80 --type=NodePort
可以通过kubectl get pods,svc -o wide查看更为详细的信息
通过访问任意一个Node都是可以打开http://10.20.30.6x:32109访问到
最后部署一个Dashboard实现仪表板的功能来监控K8S的运维
在K8S上线下载https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml文件
yum install -y wget
vim kubernetes-dashboard.yaml
把框柱的部分由我们无法访问的Google源改成阿里的源
改成如下:
/google_containers/kubernetes-dashboard-amd64:v1.10.1
接下来再修改Service部分
保存退出
然后应用kubectl apply -f kubernetes-dashboard.yaml
查看运行状态
kubectl get pods -n kube-system
查看访问端口kubectl get pods,svc -n kube-system
在外部通过https访问
在这里使用令牌登录,因此需要先创建SA并绑定默认cluster-admins管理员集群角色,在K8S执行
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
创建一个服务账户dashboard-admin隶属于K8S的最高权限cluster-admin组
创建的dashboard-admin账户在kubectl get secret -n kube-system下可用查看到
以后查看这个账户的令牌token也可以执行kubectl describe secret dashboard-admin-token-6j4ln -n kube-system再次获取
复制Token到令牌进行登录
登录成功,看到仪表板
到这里,搭建部署K8S就告一个段落了。












![clip_image001[4] 初学Kubernetes——部署K8S 1.13_云计算_13](https://s2.51cto.com/images/blog/201910/28/aa730c36ecdee364be0346508e848acf.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image001[6] 初学Kubernetes——部署K8S 1.13_Docker_14](https://s2.51cto.com/images/blog/201910/28/27015a86a28c102eea89f9a4c9900ef5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image002[4] 初学Kubernetes——部署K8S 1.13_云计算_15](https://s2.51cto.com/images/blog/201910/28/0b1a2f0570558965bab903be4c9ec7ab.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image003[4] 初学Kubernetes——部署K8S 1.13_Docker_16](https://s2.51cto.com/images/blog/201910/28/be0c5315e1cf9c897522e9de908b4535.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image004[4] 初学Kubernetes——部署K8S 1.13_云计算_17](https://s2.51cto.com/images/blog/201910/28/e52b8c08f9420e8883deab63fa558cfe.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image005[4] 初学Kubernetes——部署K8S 1.13_Docker_18](https://s2.51cto.com/images/blog/201910/28/405114681efc082ea1b8d5c802774987.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image001[8] 初学Kubernetes——部署K8S 1.13_云计算_19](https://s2.51cto.com/images/blog/201910/28/183052c34650303a2e12036cdd9340e8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image001[10] 初学Kubernetes——部署K8S 1.13_k8s_20](https://s2.51cto.com/images/blog/201910/28/f15fc77f7a89490ce6f21a1d7d39a1b5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image001[12] 初学Kubernetes——部署K8S 1.13_Docker_21](https://s2.51cto.com/images/blog/201910/28/6d0ea754681c9825cd1b36adf28e2ab7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image002[6] 初学Kubernetes——部署K8S 1.13_Docker_22](https://s2.51cto.com/images/blog/201910/28/35eeabf737a72f9797774e609451d0bd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image003[6] 初学Kubernetes——部署K8S 1.13_k8s_23](https://s2.51cto.com/images/blog/201910/28/c0c1741042fe5f5618cf89df34bf5997.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image001[14] 初学Kubernetes——部署K8S 1.13_云计算_24](https://s2.51cto.com/images/blog/201910/28/827107e0859cc8f88aab3ed28085fbb0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image002[8] 初学Kubernetes——部署K8S 1.13_Docker_25](https://s2.51cto.com/images/blog/201910/28/2e49abd1e673aaaf9ae05f0bbd4d4c5b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image003[8] 初学Kubernetes——部署K8S 1.13_Docker_26](https://s2.51cto.com/images/blog/201910/28/f32b50d485b3ef59c7bfd5a6f355a6af.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image004[6] 初学Kubernetes——部署K8S 1.13_k8s_27](https://s2.51cto.com/images/blog/201910/28/3282ab8c1a814517376785ff58d32180.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image005[6] 初学Kubernetes——部署K8S 1.13_云计算_28](https://s2.51cto.com/images/blog/201910/28/5b44bd508a9c1eb2e25651a793b41fe3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image006[4] 初学Kubernetes——部署K8S 1.13_Docker_29](https://s2.51cto.com/images/blog/201910/28/8101bdf721cc71ca1c61c599ae199e37.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image007[4] 初学Kubernetes——部署K8S 1.13_Docker_30](https://s2.51cto.com/images/blog/201910/28/523fe9af63ec276269898f995a8e6b33.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image008[4] 初学Kubernetes——部署K8S 1.13_k8s_31](https://s2.51cto.com/images/blog/201910/28/68d795d70090c57fc4802f6465942e5c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image009[4] 初学Kubernetes——部署K8S 1.13_k8s_32](https://s2.51cto.com/images/blog/201910/28/db3d21236bab5b8132eed506e7425437.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image010[4] 初学Kubernetes——部署K8S 1.13_k8s_33](https://s2.51cto.com/images/blog/201910/28/1359f5b71bc790decf935ae23879f54e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image011[4] 初学Kubernetes——部署K8S 1.13_云计算_34](https://s2.51cto.com/images/blog/201910/28/6db582bfe9bbfa921f4c62f1c9c22eb9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
![clip_image012[4] 初学Kubernetes——部署K8S 1.13_云计算_35](https://s2.51cto.com/images/blog/201910/28/6ffc5f5021092f31cabb0ab4f7fa0ea0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
























