通过在集群外创建高可用负载均衡器,部署纯软件数据中心负载均衡器(LB),为多个 ALB 提供负载均衡能力,确保业务稳定运行。支持仅配置 IPv4、仅配置 IPv6 或同时配置 IPv4 和 IPv6 双栈。
准备两个或以上主机节点作为 LB,建议 LB 节点安装 Ubuntu 22.04 操作系统,以减少 LB 转发流量到异常后端节点的时间。
在所有外部 LB 主机节点预先安装以下软件(本章以两个外部 LB 主机节点为例):
ipvsadm
Docker (20.10.7)
确保每个主机的 Docker 服务开机启动,执行命令:sudo systemctl enable docker.service。
确保每个主机节点的时钟同步。
准备 Keepalived 镜像,用于启动外部 LB 服务;平台已包含该镜像。镜像地址格式如下:<image repository address>/tkestack/keepalived:<version suffix>。不同版本的版本后缀可能略有差异。可通过以下方式获取镜像仓库地址和版本后缀。本文以 build-harbor.alauda.cn/tkestack/keepalived:v3.16.0-beta.3.g598ce923 为例。
在 global 集群中执行 kubectl get prdb base -o json | jq .spec.registry.address 获取 镜像仓库地址 参数。
在安装包解压目录执行 cat ./installer/res/artifacts.json |grep keepalived -C 2|grep tag|awk '{print $2}'|awk -F '"' '{print $2}' 获取 版本后缀。
注意:以下操作需在每个外部 LB 主机节点执行一次,且主机节点的 hostname 不得重复。
将以下配置信息添加到文件 /etc/modules-load.d/alive.kmod.conf。
将以下配置信息添加到文件 /etc/sysctl.d/alive.sysctl.conf。
执行 reboot 命令重启。
创建 Keepalived 配置文件夹。
根据以下文件中的注释修改配置项,并保存到 /etc/keepalived/ 文件夹,文件名为 alive.yaml。
在业务集群执行以下命令检查配置文件中的证书过期时间,确保证书仍然有效。证书过期后 LB 功能将不可用,需要联系平台管理员更新证书。
将 Kubernetes 集群中三个 Master 节点的 /etc/kubernetes/admin.conf 文件复制到外部 LB 节点的 /etc/keepalived/kubecfg 文件夹,命名带索引,如 kubecfg01.conf,并修改这三个文件中的 apiserver 节点地址为 Kubernetes 集群的实际节点地址。
注意:平台证书更新后,需要重新执行此步骤,覆盖原文件。
检查证书有效性。
将业务集群 Master 节点的 /usr/bin/kubectl 复制到 LB 节点。
执行 chmod +x /usr/bin/kubectl 赋予执行权限。
执行以下命令确认证书有效。
若返回如下结果,则证书有效。
将 Keepalived 镜像上传到外部 LB 节点,并使用 Docker 运行 Keepalived。
在访问 keepalived 的节点执行以下命令:sysctl -w net.ipv4.conf.all.arp_accept=1。
执行命令 ipvsadm -ln 查看 IPVS 规则,可见适用于业务集群 ALB 的 IPv4 和 IPv6 规则。
关闭 VIP 所在的 LB 节点,测试 IPv4 和 IPv6 的 VIP 是否能成功迁移到其他节点,通常在 20 秒内完成。
在非 LB 节点使用 curl 命令测试与 VIP 的通信是否正常。