教你如何用Keepalived和HAproxy配置高可用 Kubernetes 集群

💡 原文中文,约9100字,阅读约需22分钟。
📝

内容提要

本文介绍了使用Keepalived和HAproxy创建高可用的Kubernetes集群,配置步骤和验证方法。同时介绍了使用KubeKey创建Kubernetes集群的方法。

🔎

延伸解读

负载均衡节点独立部署的考量

文章将Keepalived和HAproxy部署在专用的lb1和lb2节点上,而非主节点。这样做可以避免与Kubernetes组件和服务产生潜在冲突,提升集群稳定性。虽然也可以在主节点上安装这些组件,但独立部署更安全,且可按需增加更多负载均衡节点来增强冗余。

虚拟IP漂移机制与故障转移验证

Keepalived通过VRRP实现虚拟IP(VIP)在节点间的自动漂移。当lb1上的HAproxy停止时,VIP会转移到lb2,确保集群API服务器仍可访问。文章通过ip a命令验证VIP的添加和消失,并模拟故障来确认高可用配置生效,这是部署Kubernetes集群前的重要检查步骤。

KubeKey配置中的关键参数

使用KubeKey创建集群时,config-sample.yaml中的controlPlaneEndpoint.address必须设置为VIP地址(如172.16.0.10),端口为6443。这样Kubernetes的apiserver可以通过VIP进行负载均衡。同时,需在hosts和roleGroups中正确填写节点信息,确保etcd、master和worker角色分配无误。

版本兼容性与安装注意事项

文章示例使用KubeKey v2.0.0创建Kubernetes v1.21.5和KubeSphere v3.2.1。KubeSphere 3.2.1建议的Kubernetes版本为v1.19.x至v1.22.x(v1.22.x为实验性支持)。若不指定Kubernetes版本,KubeKey默认安装v1.21.5。此外,下载KubeKey时需设置KKZONE=cn以确保从正确区域获取。

❓

Q&A

如何用Keepalived和HAproxy配置高可用Kubernetes集群?

步骤包括:准备主机(如3个主节点、3个工作节点、2个负载均衡节点和1个虚拟IP);在负载均衡节点上安装Keepalived和HAproxy(yum install keepalived haproxy psmisc -y);配置HAproxy(编辑/etc/haproxy/haproxy.cfg,设置frontend和backend指向apiserver端口6443);配置Keepalived(编辑/etc/keepalived/keepalived.conf,设置虚拟IP和优先级);验证高可用(模拟节点故障,检查虚拟IP漂移);最后使用KubeKey创建Kubernetes集群。

Keepalived和HAproxy在Kubernetes高可用集群中各自起什么作用?

Keepalived提供VRRP实现,允许配置Linux机器使负载均衡并预防单点故障;HAproxy提供可靠、高性能的负载均衡,能与Keepalived完美配合。两者结合,当负载均衡节点故障时,虚拟IP地址会自动漂移到另一个节点,确保集群高可用。

高可用Kubernetes集群的示例架构是怎样的?

示例集群包括三个主节点(同时作为etcd节点)、三个工作节点、两个用于负载均衡的节点(安装Keepalived和HAproxy),以及一个虚拟IP地址(浮动IP)。虚拟IP在节点故障时可在节点之间漂移,从而实现高可用。

如何验证Keepalived和HAproxy的高可用配置是否成功?

在lb1上运行ip a s查看虚拟IP是否已添加;然后模拟故障(如systemctl stop haproxy),再次检查虚拟IP是否从lb1消失;最后在lb2上运行ip a s,确认虚拟IP已漂移到lb2。如果虚拟IP成功漂移,则高可用配置成功。

使用KubeKey创建Kubernetes集群的步骤是什么?

步骤:下载KubeKey(curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -),设置KKZONE=cn,使kk可执行(chmod +x kk),创建配置文件(./kk create config --with-kubesphere v3.2.1 --with-kubernetes v1.21.5),编辑config-sample.yaml添加机器信息和负载均衡器配置,然后运行./kk create cluster -f config-sample.yaml开始安装。

在配置Keepalived时需要注意哪些关键字段?

关键字段包括:interface(必须提供自己的网卡信息,可通过ifconfig获取);unicast_src_ip(当前机器的IP地址);unicast_peer(其他负载均衡节点的IP地址);virtual_ipaddress(虚拟IP地址);以及track_script中的chk_haproxy脚本用于监控HAproxy状态。

🏷️

标签

➡️

继续阅读