如何使用Kubeadm设置高可用性Kubernetes集群
当我们为生产环境在本地设置Kubernetes(k8s)集群时 , 建议以高可用性部署它 。 高可用性意味着在HA中安装Kubernetes主节点或工作节点 。 在本文中 , 我将演示如何使用kubeadm实用程序设置高可用性的Kubernetes集群 。
为了进行演示 , 我使用了五个具有以下详细信息的CentOS 7系统:
- k8s-master-1 –最低CentOS 7 – 192.168.1.40 – 2GB RAM , 2vCPU , 40 GB磁盘
- k8s-master-2 –最低CentOS 7 – 192.168.1.41 – 2GB RAM , 2vCPU , 40 GB磁盘
- k8s-master-3 –最低CentOS 7 – 192.168.1.42 – 2GB RAM , 2vCPU , 40 GB磁盘
- k8s-worker-1 –最低CentOS 7 – 192.168.1.43 – 2GB RAM , 2vCPU , 40 GB磁盘
- k8s-worker-2 –最低CentOS 7 – 192.168.1.44 – 2GB RAM , 2vCPU , 40 GB磁盘
文章插图
注意:etcd集群也可以在主节点之外形成 , 但是为此我们需要额外的硬件 , 因此我将etcd安装在主节点内 。
设置K8s集群高可用的最低要求:
- 在所有主节点和工作节点上安装Kubeadm , kubelet和kubectl
- 主节点和工作节点之间的网络连接
- 所有节点上的Internet连接
- 根凭证或所有节点上的sudo特权用户
步骤1. 设置主机名并在/etc/hosts文件中添加条目运行hostnamectl命令在每个节点上设置主机名 , 例如 , 示例显示K8s master节点:
$ hostnamectl set-hostname "k8s-master-1"$ exec bash
同样 , 在其余节点上运行上述命令并设置它们各自的主机名 。 在所有主节点和工作节点上都设置了主机名之后 , 请在所有节点上的/etc/hosts文件中添加以下条目 。192.168.1.40k8s-master-1192.168.1.41k8s-master-2192.168.1.42k8s-master-3192.168.1.43k8s-worker-1192.168.1.44k8s-worker-2192.168.1.45vip-k8s-master
我在主机文件中使用了另一个条目“ 192.168.1.45 vip-k8s-master” , 因为我将在配置haproxy并在所有主节点上保持连接状态时使用此IP和主机名 。 该IP将用作kube-apiserver 负载均衡器ip 。 所有的kube-apiserver请求都将到达此IP , 然后请求将分发到后端实际的kube-apiserver节点上 。步骤2.在所有主/工作节点上安装和配置Keepalive和HAProxy使用以下yum命令在每个主节点上安装keepalived和haproxy:
$ sudo yum install haproxy keepalived -y
首先在k8s-master-1上配置Keepalived , 创建check_apiserver.sh脚本将获得以下内容:[kadmin@k8s-master-1 ~]$ sudo vi /etc/keepalived/check_apiserver.sh#!/bin/shAPISERVER_VIP=192.168.1.45APISERVER_DEST_PORT=6443errorExit() {echo "*** $*" 1> thencurl --silent --max-time 2 --insecure https://${APISERVER_VIP}:${APISERVER_DEST_PORT}/ -o /dev/null || errorExit "Error GET https://${APISERVER_VIP}:${APISERVER_DEST_PORT}/"fi
保存并退出文件 , 设置可执行权限:$ sudo chmod + x /etc/keepalived/check_apiserver.sh
备份keepalived.conf文件 , 然后清空该文件 。[kadmin@k8s-master-1 ~]$ sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-org[kadmin@k8s-master-1 ~]$ sudo sh -c '> /etc/keepalived/keepalived.conf'
现在将以下内容粘贴到/etc/keepalived/keepalived.conf文件中[kadmin@k8s-master-1 ~]$ sudo vi /etc/keepalived/keepalived.conf! /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL}vrrp_script check_apiserver {script "/etc/keepalived/check_apiserver.sh"interval 3weight -2fall 10rise 2}vrrp_instance VI_1 {state MASTERinterface enp0s3virtual_router_id 151priority 255authentication {auth_type PASSauth_pass P@##D321!}virtual_ipaddress {192.168.1.45/24}track_script {check_apiserver}}
保存并关闭文件 。注意:对于master-2和3节点 , 仅需要更改此文件的两个参数 。 主节点2和3的状态将变为SLAVE , 优先级分别为254和253 。
在k8s-master-1节点上配置HAProxy , 编辑其配置文件并添加以下内容:
[kadmin@k8s-master-1 ~]$ sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-org
删除默认部分之后的所有行 , 并添加以下行[kadmin@k8s-master-1 ~]$ sudo vi /etc/haproxy/haproxy.cfg#---------------------------------------------------------------------# apiserver frontend which proxys to the masters#---------------------------------------------------------------------frontend apiserverbind *:8443mode tcpoption tcplogdefault_backend apiserver#---------------------------------------------------------------------# round robin balancing for apiserver#---------------------------------------------------------------------backend apiserveroption httpchk GET /healthzhttp-check expect status 200mode tcpoption ssl-hello-chkbalanceroundrobinserver k8s-master-1 192.168.1.40:6443 checkserver k8s-master-2 192.168.1.41:6443 checkserver k8s-master-3 192.168.1.42:6443 check
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面
- 培育|跨境电商人才如何培育,长沙有“谱”了
- 抖音小店|抖音进军电商,短视频的商业模式与变现,创业者该如何抓住机遇?
- 计费|5G是如何计费的?
- QuestMobile|QuestMobile:百度智能小程序月人均使用个数达9.6个
- 车轮旋转|牵引力控制系统是如何工作的?它有什么作用?
- 视频|短视频如何在前3秒吸引用户眼球?
- Vlog|中国Vlog|中国基建如何升级?看5G+智慧工地