如何使用Kubeadm设置高可用性Kubernetes集群( 二 )

保存并退出文件 。
如何使用Kubeadm设置高可用性Kubernetes集群文章插图
现在将这些三个文件(check_apiserver.sh , keepalived.conf和haproxy.cfg)从k8s-master-1复制到k8s-master-2和3
运行以下for循环将这些文件scp复制到master 2和3上;
[kadmin@k8s-master-1 ~]$ for f in k8s-master-2 k8s-master-3; do scp /etc/keepalived/check_apiserver.sh /etc/keepalived/keepalived.conf root@$f:/etc/keepalived; scp /etc/haproxy/haproxy.cfg root@$f:/etc/haproxy; done注意:别忘了更改我们在上面针对k8s-master-2和3讨论的keepalived.conf文件中的两个参数 。
如果防火墙在主节点上运行 , 则在所有三个主节点上添加以下防火墙规则
$ sudo firewall-cmd --add-rich-rule='rule protocol value="http://kandian.youth.cn/index/vrrp" accept' --permanent$ sudo firewall-cmd --permanent --add-port=8443/tcp$ sudo firewall-cmd --reload现在 , 使用以下命令在所有三个主节点上启动并启用keepalived和haproxy服务:
$ sudo systemctl enable keepalived --now$ sudo systemctl enable haproxy --now这些服务成功启动后 , 请验证是否已在k8s-master-1节点上启用了VIP(虚拟IP) , 因为我们已在keepalived配置文件中将k8s-master-1标记为MASTER节点 。
如何使用Kubeadm设置高可用性Kubernetes集群文章插图
完美 , 上面的输出确认已在k8s-master-1上启用了VIP 。
步骤3. 禁用Swap分区 , 将SELinux设置为主节点和辅助节点的许可规则和防火墙规则在所有节点(包括工作节点)上禁用交换空间 , 运行以下命令:
$ sudo swapoff -a $ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab在所有主节点和工作节点上将SELinux设置为Permissive , 运行以下命令 ,
$ sudo setenforce 0$ sudo sed -i's / ^ SELINUX = enforcing $ / SELINUX = permissive /'/ etc / selinux / config主节点的防火墙规则:
如果防火墙在主节点上运行 , 则在防火墙中允许以下端口
如何使用Kubeadm设置高可用性Kubernetes集群文章插图
所有主节点上运行以下firewall-cmd命令:
$ sudo firewall-cmd --permanent --add-port=6443/tcp$ sudo firewall-cmd --permanent --add-port=2379-2380/tcp$ sudo firewall-cmd --permanent --add-port=10250/tcp$ sudo firewall-cmd --permanent --add-port=10251/tcp$ sudo firewall-cmd --permanent --add-port=10252/tcp$ sudo firewall-cmd --permanent --add-port=179/tcp$ sudo firewall-cmd --permanent --add-port=4789/udp$ sudo firewall-cmd --reload$ sudo modprobe br_netfilter$ sudo sh -c "echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables"$ sudo sh -c "echo '1' > /proc/sys/net/ipv4/ip_forward"工作节点的防火墙规则:
如果防火墙在工作节点上运行 , 则在所有工作程序节点上允许防火墙中的以下端口
如何使用Kubeadm设置高可用性Kubernetes集群文章插图
在所有工作节点上运行以下命令:
$ sudo firewall-cmd --permanent --add-port=10250/tcp$ sudo firewall-cmd --permanent --add-port=30000-32767/tcp$ sudo firewall-cmd --permanent --add-port=179/tcp$ sudo firewall-cmd --permanent --add-port=4789/udp$ sudo firewall-cmd --reload$ sudo modprobe br_netfilter$ sudo sh -c "echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables"$ sudo sh -c "echo '1' > /proc/sys/net/ipv4/ip_forward"步骤4. 在主节点和工作节点上安装容器运行(CRI)Docker在所有主节点和工作节点上安装Docker , 运行以下命令
$ sudo yum install -y yum-utils$ sudo yum-config-manager --add-repo $ sudo yum install docker-ce -y运行以下systemctl命令以启动并启用docker服务(在所有主节点和工作节点上也运行此命令)
$ sudo systemctl enable docker --now现在 , 让我们在下一步中安装kubeadm , kubelet和kubectl
步骤5. 安装Kubeadm , kubelet和kubectl在所有主节点和辅助节点上安装kubeadm , kubelet和kubectl 。 首先安装这些软件包之前 , 我们必须配置Kubernetes repo仓库 , 在每个主节点和工作节点上运行以下命令
cat <现在 , 在yum命令下面运行以安装这些软件包
$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes运行以下systemctl命令以在所有节点(主节点和工作节点)上启用kubelet服务
$ sudo systemctl enable kubelet --now步骤6. 从第一个主节点初始化Kubernetes集群现在到第一个主节点终端下执行以下命令
[kadmin@k8s-master-1 ~]$ sudo kubeadm init --control-plane-endpoint "vip-k8s-master:8443" --upload-certs