高可用使用示例
配置说明
提示
VIP(虚拟 IP 地址):172.25.25.100HAProxy的172.25.25.100:9443代理到172.25.25.61:6443、172.25.25.62:6443、172.25.25.63:6443- 高可用最低配置:
3个 控制平面节点、2个 工作节点- 控制平面 正常运行的数量 一定要
大于 50%,正常运行的数量 小于或等于 50% 时,整个集群将无法正常工作 - 通常情况下,控制平面的数量为奇数。
- 工作节点 至少存在
2个时,且任意一个工作节点都可以运行所有负载- 如果工作节点只有
2个时,宕机1个工作节点,宕机的服务会被调度到另1个工作节点, 如果这时正常运行的工作节点的资源不能满足所有负载,那么整个集群将无法正常工作(OOM),这种情况下,不叫高可用: 因为整个集群中不能出现任意1个工作节点宕机。
- 如果工作节点只有
- 此配置中,仅允许宕机
1个控制平面节点、1个工作节点
- 控制平面 正常运行的数量 一定要
- 高可用只是在一定范围内的方案:
- 如果集群中有
3个工作节点,任意2个工作节点的资源总和可以运行所有负载,这时集群可以宕机1个工作节点 - 如果集群中有
3个工作节点,任意1个工作节点的资源总和可以运行所有负载,这时集群可以宕机2个工作节点 - 如果集群中有
4个工作节点,任意3个工作节点的资源总和可以运行所有负载,这时集群可以宕机1个工作节点 - 如果集群中有
4个工作节点,任意2个工作节点的资源总和可以运行所有负载,这时集群可以宕机2个工作节点 - 如果集群中有
5个工作节点,任意4个工作节点的资源总和可以运行所有负载,这时集群可以宕机1个工作节点 - 如果集群中有
5个工作节点,任意3个工作节点的资源总和可以运行所有负载,这时集群可以宕机2个工作节点 - 以此类推
- 如果集群中有
| 节点名称 | 集群内部名称 | IP | HAProxy Name | API Server 地址 | VIP 编号 |
|---|---|---|---|---|---|
| 控制平面 1 | control-plane-1 | 172.25.25.61 | k8s-master1 | 172.25.25.61:6443 | 1 |
| 控制平面 2 | control-plane-2 | 172.25.25.62 | k8s-master2 | 172.25.25.62:6443 | 2 |
| 控制平面 3 | control-plane-3 | 172.25.25.63 | k8s-master3 | 172.25.25.63:6443 | 3 |
| 节点名称 | 集群内部名称 | IP |
|---|---|---|
| 工作节点 1 | node-1 | 172.25.25.71 |
| 工作节点 2 | node-2 | 172.25.25.72 |
创建 VIP
shell
curl -k -o k8s.sh https://k8s-sh.xuxiaowei.com.cn/k8s.sh
chmod +x k8s.sh
sudo ./k8s.sh \
firewalld-stop \
docker-repo docker-install \
availability-vip-install \
availability-vip=172.25.25.100 \
availability-master=k8s-master1@172.25.25.61:6443 \
availability-master=k8s-master2@172.25.25.62:6443 \
availability-master=k8s-master3@172.25.25.63:6443 \
availability-vip-no=1shell
curl -k -o k8s.sh https://k8s-sh.xuxiaowei.com.cn/k8s.sh
chmod +x k8s.sh
sudo ./k8s.sh \
firewalld-stop \
docker-repo docker-install \
availability-vip-install \
availability-vip=172.25.25.100 \
availability-master=k8s-master1@172.25.25.61:6443 \
availability-master=k8s-master2@172.25.25.62:6443 \
availability-master=k8s-master3@172.25.25.63:6443 \
availability-vip-no=2shell
curl -k -o k8s.sh https://k8s-sh.xuxiaowei.com.cn/k8s.sh
chmod +x k8s.sh
sudo ./k8s.sh \
firewalld-stop \
docker-repo docker-install \
availability-vip-install \
availability-vip=172.25.25.100 \
availability-master=k8s-master1@172.25.25.61:6443 \
availability-master=k8s-master2@172.25.25.62:6443 \
availability-master=k8s-master3@172.25.25.63:6443 \
availability-vip-no=3控制平面 1 初始化集群
警告
- 仅在
控制平面 1上执行初始化,其他节点只能通过kubeadm join加入集群
shell
sudo ./k8s.sh \
cluster \
kubernetes-init-node-name=control-plane-1 \
control-plane-endpoint=172.25.25.100:9443控制平面 2、3 加入集群
控制平面 2、3 安装配置必要软件
shell
sudo ./k8s.sh node控制平面 2、3 加入集群
提示
kubeadm join命令中--token参数值,需要从控制平面 1节点获取, 详情见:如何使用 control-plane 角色加入集群?kubeadm join命令中的--certificate-key参数值,需要从控制平面 1节点获取, 详情见:如何使用 control-plane 角色加入集群?
shell
kubeadm join 172.25.25.100:9443 \
--node-name control-plane-2 \
--token kur85v.lb0g5uzqihfwc7d7 --discovery-token-ca-cert-hash \
sha256:5048ac1ccf26c7c1add345f499d126591feb32289deab6966958bf7b63db084d \
--control-plane \
--certificate-key ec80f310f6940123d7dbec2561c45d4a28c7db1be8bf0111a33b32527bd1faa2shell
kubeadm join 172.25.25.100:9443 \
--node-name control-plane-3 \
--token kur85v.lb0g5uzqihfwc7d7 --discovery-token-ca-cert-hash \
sha256:5048ac1ccf26c7c1add345f499d126591feb32289deab6966958bf7b63db084d \
--control-plane \
--certificate-key ec80f310f6940123d7dbec2561c45d4a28c7db1be8bf0111a33b32527bd1faa2工作节点 1、2 加入集群
工作节点 1、2 安装配置必要软件
shell
curl -k -o k8s.sh https://k8s-sh.xuxiaowei.com.cn/k8s.sh
chmod +x k8s.sh
sudo ./k8s.sh node工作节点 1、2 加入集群
提示
kubeadm join命令中--token参数值,需要从控制平面 1节点获取, 详情见:如何使用 control-plane 角色加入集群?
shell
kubeadm join 172.25.25.100:9443 \
--node-name node-1 \
--token kur85v.lb0g5uzqihfwc7d7 --discovery-token-ca-cert-hash \
sha256:5048ac1ccf26c7c1add345f499d126591feb32289deab6966958bf7b63db084dshell
kubeadm join 172.25.25.100:9443 \
--node-name node-2 \
--token kur85v.lb0g5uzqihfwc7d7 --discovery-token-ca-cert-hash \
sha256:5048ac1ccf26c7c1add345f499d126591feb32289deab6966958bf7b63db084d