使用kuberspray部署Kubernetes集群

kuberspray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具。项目地址:https://github.com/kubernetes-incubator/kubespray

部署历程

目前为止,对于Kubernetes集群的部署,我只谈的上是一个入门者,涉及到了众多的运维知识,对于一个开发来说,确实挺难的。万事开头难,好事多磨,经过一个多星期的反复尝试,终于搭建好了。对比市面上的部署方式,主流的有三种方式。一是完全手动部署,非常的繁琐,容易部署。二是采用kubeAdmin开源项目进行部署,这个也是谷歌官方开源的一个项目。三是,采用kubeSpray进行部署。我的理念是有好的工具当然是用好工具,所以手动部署是不可能的,完全排除,所以Kubeadmin和KubeSpray。而我对Ansibe这个运维组件兴趣非常的大,所以我最终选择了KubeSpray进行了部署。

部署非常艰难的,决定搞Kubernetes,专门组建了一个群,找了一些朋友一起来学习和交流,采用的方式是大家一起学习,一起写文档,一起交流,另外有主机的出主机。所以,一开始主机是几个朋友自己的主机,不在局域网内,os也不一样,这是大坑。另外国内屏蔽谷歌,导致谷歌镜像下载不了,坑。

坑点1,不在一个局域网不能部署Kubernetes?我专门打电话问了阿里云,客户说不可以,是不是真的不可以,我是不确定的。另外集群的型号不同和操作系统不同也会导致失败。

坑点2,长城屏蔽了谷歌的镜像,所以我刚开始是根据谷歌的镜像在阿里云镜像仓库一顿搜索,导致Kubernetes各个版本组件不兼容,出现了问题。

现详细讲解我的部署过程,如果有其他人想加入我们的Kubernetes兴趣群,加我微信miles02和我联系。

主机相关

主机需要在同一局域网内?所以我们重新租了三台机器,进行了操作。现在列举主机相关的信息如下:

主机系统版本配置ip
AnsibleCentOS 7.21核1G172.31.84.154
Mater、NodeCentOS 7.22核2G172.31.84.155
NodeCentOS 7.22核2G172.31.84.156

Ansible那台主机使用KubeSpray进行部署,这台机器不做Kubernetes相关集群的部署。另外2台机器,一台既作为Master,又作为Node,另外一台是一个Node。

本次部署,使用的KubeSpray版本为v2.1.2。

Master、Node节点的操作

因为本次使用KubeSpray操作部署,所以所有的主机都需要关闭防火墙等相关的操作。

所以的主机都需要关闭selinux,执行的命令如下:

 
  1. setenforce 0

  2. sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

  3.  

防火墙和网络设置,所有的主机都执行以下命令:

 
  1. systemctl stop firewalld

  2. modprobe br_netfilter

  3. echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

  4. sysctl -w net.ipv4.ip_forward=1

  5.  

这样与Kubernetes集群相关的集群设置就完毕了。

Ansibe主机操作

Ansibe主机也需要关闭selinux和关闭防火墙以及网络设置,同上面。

在Ansible主机上设置免密码操作其它主机

首先生成ssh公钥和私钥。

ssh-keygen -q -t rsa  -N "" -f  ~/.ssh/id_rsa

建立ssh通道,将秘钥分发给master主机。

 
  1. ssh-copy-id root@172.31.84.155

  2. ssh-copy-id root@172.31.84.156

  3.  

安装Ansible

安装ansible和jinja2,安装命令如下。

 
  1.  
  2. sudo yum install epel-release

  3. sudo yum install ansible

  4.  
  5. easy_install pip

  6. pip2 install jinja2 --upgrade

  7.  
  8.  

如果执行 pip2 install jinja2–upgrade 提示升级,则升级,再执行一次命令。

安装python36

 
  1. sudo yum install python36 -y

  2.  

在Ansible集群上安装KubeSpray

在ansible机器上下载KubeSpray代码,并解压,执行如下的命令:

 
  1. wget https://github.com/kubernetes-incubator/kubespray/archive/v2.1.2.tar.gz

  2. tar -zxvf v2.1.2.tar.gz

  3. mv kubespray-2.1.2 kuberspray

  4.  

安装KubeSpray所需的包

 
  1. cd kubespray

  2. pip install -r requirements.txt

定义集群

vim ~./kubespray/inventory/inventory.cfg

 
  1. [all]

  2. node1 ansible_host=172.31.84.156 ip=172.31.84.156

  3. node2 ansible_host=172.31.84.155 ip=172.31.84.155

  4.  
  5. [kube-master]

  6. node1

  7.  
  8. [kube-node]

  9. node1

  10. node2

  11.  
  12. [etcd]

  13. node1

  14.  
  15. [k8s-cluster:children]

  16. kube-node

  17. kube-master

  18.  
  19. [calico-rr]

  20.  
  21. [vault]

  22. node1

换镜像

在kuberspay源码源代码中搜索包含 gcr.io/google_containers 和 quay.io 镜像的文件,并替换为我们之前已经上传到阿里云的进行,替换脚步如下:执行

 
  1. for file in ${grc_image_files[@]} ; do

  2. sed -i 's/gcr.io\/google_containers/registry.cn-hangzhou.aliyuncs.com\/szss_k8s/g' $file

  3. done

同理替换quay_image:

 
  1. quay_image_files=(

  2. ./kubespray/extra_playbooks/roles/download/defaults/main.yml

  3. ./kubespray/roles/download/defaults/main.yml

  4. )

  5.  

执行:

 
  1. for file in ${quay_image_files[@]} ; do

  2. sed -i 's/quay.io\/coreos\//registry.cn-hangzhou.aliyuncs.com\/szss_quay_io\/coreos-/g' $file

  3. sed -i 's/quay.io\/calico\//registry.cn-hangzhou.aliyuncs.com\/szss_quay_io\/calico-/g' $file

  4. sed -i 's/quay.io\/l23network\//registry.cn-hangzhou.aliyuncs.com\/szss_quay_io\/l23network-/g' $file

  5. done

  6.  

用ansible playbook部署Kubernetes集群

以上全部完成,执行安装操作:大约过了10分钟,如果顺利的话,集群会成功搭建。

验证几点是否成功

登录Kubernete集群的Mater节点,执行如下命令:

 
  1. kubectl get no

  2.  

制台打印出了正确的Kubernetes节点信息,则安装成功。

增加节点

 
  1. cd kubespray

  2. ansible-playbook -i inventory/inventory.cfg cluster.yml -b -v --private-key=~/.ssh/id_rsa --limit node3

  3.  

到问题卸载

ansible执行卸载操作:

 
  1.  
  2. ansible-playbook -i inventory/mycluster/hosts.ini reset.yml

  3.  

装失败清理Kubernetes机器

 
  1.  
  2. rm -rf /etc/kubernetes/

  3. rm -rf /var/lib/kubelet

  4. rm -rf /var/lib/etcd

  5. rm -rf /usr/local/bin/kubectl

  6. rm -rf /etc/systemd/system/calico-node.service

  7. rm -rf /etc/systemd/system/kubelet.service

  8. systemctl stop etcd.service

  9. systemctl disable etcd.service

  10. systemctl stop calico-node.service

  11. systemctl disable calico-node.service

  12. docker stop $(docker ps -q)

  13. docker rm $(docker ps -a -q)

  14. service docker restart

  15.  

更多阅读

 

参考文章:

https://github.com/kubernetes-incubator/kubespray

https://mp.weixin.qq.com/s/-SXuXhY7KIFl1zYvVT93ZA

https://blog.csdn.net/zhuchuangang/article/details/77712614

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值