400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

使用Kubespray2.8.3部署生产可用的Kubernetes集群(1.12.5)

Kubernetes的安装部署是难中之难,每个版本安装方式都略有区别。笔者一直想找一种支持多平台相对简单适用于生产环境 的部署方案。经过一段时间的调研,有如下几种解决方案进入笔者视野:

创新互联建站服务项目包括霍邱网站建设、霍邱网站制作、霍邱网页制作以及霍邱网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,霍邱网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到霍邱省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

部署方案优点缺点
Kubeadm官方出品部署较麻烦、不够透明
Kubespray官方出品、部署较简单、懂Ansible就能上手不够透明
RKE部署较简单、需要花一些时间了解RKE的cluster.yml配置文件不够透明
手动部署 第三方操作文档完全透明、可配置、便于理解K8s各组件之间的关系部署非常麻烦,容易出错

其他诸如Kops之类的方案,由于无法跨平台,或者其他因素,被我pass了。

最终,笔者决定使用Kubespray部署Kubernetes集群。也希望大家能够一起讨论,总结出更加好的部署方案

废话不多说,以下是操作步骤。

注:撰写本文时,笔者临时租赁了几台海外阿里云机器,所以不存在无法连接gcr.io的问题。如果您的服务器在国内,请:

  • 考虑科学上网
  • 修改Kubespray中的gcr地址,改为其他仓库地址,例如阿里云镜像地址(修改roles/download/defaults/main.yml 即可)
  • 先弄个海外环境,安装完Kubernetes后,将镜像docker save 下来,再到国内的服务器上docker load

主机规划

IP作用
172.21.240.64ansible-client
172.21.240.65master,node
172.21.240.66master,node
172.21.240.67node
172.21.240.68node
172.21.240.69node

准备工作

关闭selinux

所有机器都必须关闭selinux,执行如下命令即可。

~]# setenforce 0
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

网络配置

在master机器上
~]# firewall-cmd --permanent --add-port=6443/tcp
~]# firewall-cmd --permanent --add-port=2379-2380/tcp
~]# firewall-cmd --permanent --add-port=10250/tcp
~]# firewall-cmd --permanent --add-port=10251/tcp
~]# firewall-cmd --permanent --add-port=10252/tcp
~]# firewall-cmd --permanent --add-port=10255/tcp
~]# firewall-cmd --reload
~]# modprobe br_netfilter
~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
~]# sysctl -w net.ipv4.ip_forward=1

如果关闭了防火墙,则只需执行最下面三行。

在node机器上
~]# firewall-cmd --permanent --add-port=10250/tcp
~]# firewall-cmd --permanent --add-port=10255/tcp
~]# firewall-cmd --permanent --add-port=30000-32767/tcp
~]# firewall-cmd --permanent --add-port=6783/tcp
~]# firewall-cmd  --reload
~]# modprobe br_netfilter
~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
~]# sysctl -w net.ipv4.ip_forward=1

如果关闭了防火墙,则只需执行最下面两行。

【可选】关闭防火墙
systemctl stop firewalld

在ansible-client机器上安装必备软件

# 安装epel源
~]# sudo yum install -y epel-release
# 安装ansible
~]# sudo yum install -y ansible
# 安装Python 3.6
~]# sudo yum install –y python36

在ansible-client机器上配置免密登录其他机器

生成ssh公钥和私钥

在ansible-cilent机器上执行:

~]# ssh-keygen

然后三次回车,生成ssh公钥和私钥。

建立ssh单向通道

在ansible-cilent机器上执行:

~]# ssh-copy-id root@172.21.240.65      #将公钥分发给88机器
~]# ssh-copy-id root@172.21.240.66
~]# ssh-copy-id root@172.21.240.67
~]# ssh-copy-id root@172.21.240.68
~]# ssh-copy-id root@172.21.240.69

在ansible-client机器上安装kubespray

验证

验证1:查看Node状态

主要是验证各个Node是否正常。

]# kubectl get nodes
NAME    STATUS   ROLES         AGE     VERSION
node1   Ready    master,node   8m41s   v1.12.5
node2   Ready    master,node   7m32s   v1.12.5
node3   Ready    node          6m59s   v1.12.5
node4   Ready    node          6m59s   v1.12.5
node5   Ready    node          6m59s   v1.12.5

每个node都是ready的,说明OK。

验证2:部署一个NGINX

主要是验证网络等是否正常,步骤如下。

卸载Kubespray

]# ansible-playbook -i inventory/mycluster/hosts.ini reset.yml

参考文档:

Docker与Kubernetes开源书



当前文章:使用Kubespray2.8.3部署生产可用的Kubernetes集群(1.12.5)
当前地址:http://www.bluegullmedia.com/article/ihogsi.html

其他资讯

让你的专属顾问为你服务

0.0397s