使用Kubespray 2.8.3部署生产可用的Kubernetes集群(1.12.5)

发布时间:2020-05-29 05:42:53 作者:lilizhou2008
来源:网络 阅读:748

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

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

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

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

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

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

主机规划

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

准备工作

关闭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开源书

本文首发

http://www.itmuch.com/install/kubernetes-deploy-by-kubespray2.8.3/

干货分享

使用Kubespray 2.8.3部署生产可用的Kubernetes集群(1.12.5)

推荐阅读:
  1. 使用Kubectl管理Kubernetes的全解教程
  2. Workiva如何使用K8S为全球3000家客户提供数据管理云平台

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker kubernetes kubespray

上一篇:golang中的数组切片

下一篇:通知栏Notification在不同手机上显示的问题总结

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》