Skip to content

高可用使用示例

配置说明

提示

  • VIP虚拟 IP 地址):172.25.25.100
  • HAProxy172.25.25.100:9443 代理到 172.25.25.61:6443172.25.25.62:6443172.25.25.63:6443
  • 高可用最低配置:3 个 控制平面节点、2 个 工作节点
    1. 控制平面 正常运行的数量 一定要 大于 50%,正常运行的数量 小于或等于 50% 时,整个集群将无法正常工作
    2. 通常情况下,控制平面的数量为奇数。
    3. 工作节点 至少存在 2 个时,且任意一个工作节点都可以运行所有负载
      • 如果工作节点只有 2 个时,宕机 1 个工作节点,宕机的服务会被调度到另 1 个工作节点, 如果这时正常运行的工作节点的资源不能满足所有负载,那么整个集群将无法正常工作(OOM),这种情况下,不叫高可用: 因为整个集群中不能出现任意 1 个工作节点宕机
    4. 此配置中,仅允许宕机 1 个控制平面节点、1 个工作节点
  • 高可用只是在一定范围内的方案
    1. 如果集群中有 3 个工作节点,任意 2 个工作节点的资源总和可以运行所有负载,这时集群可以宕机 1 个工作节点
    2. 如果集群中有 3 个工作节点,任意 1 个工作节点的资源总和可以运行所有负载,这时集群可以宕机 2 个工作节点
    3. 如果集群中有 4 个工作节点,任意 3 个工作节点的资源总和可以运行所有负载,这时集群可以宕机 1 个工作节点
    4. 如果集群中有 4 个工作节点,任意 2 个工作节点的资源总和可以运行所有负载,这时集群可以宕机 2 个工作节点
    5. 如果集群中有 5 个工作节点,任意 4 个工作节点的资源总和可以运行所有负载,这时集群可以宕机 1 个工作节点
    6. 如果集群中有 5 个工作节点,任意 3 个工作节点的资源总和可以运行所有负载,这时集群可以宕机 2 个工作节点
    7. 以此类推
节点名称集群内部名称IPHAProxy NameAPI Server 地址VIP 编号
控制平面 1control-plane-1172.25.25.61k8s-master1172.25.25.61:64431
控制平面 2control-plane-2172.25.25.62k8s-master2172.25.25.62:64432
控制平面 3control-plane-3172.25.25.63k8s-master3172.25.25.63:64433
节点名称集群内部名称IP
工作节点 1node-1172.25.25.71
工作节点 2node-2172.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=1
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=2
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=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 加入集群

提示

  1. kubeadm join 命令中 --token 参数值,需要从 控制平面 1 节点获取, 详情见:如何使用 control-plane 角色加入集群?
  2. 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 ec80f310f6940123d7dbec2561c45d4a28c7db1be8bf0111a33b32527bd1faa2
shell
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 加入集群

提示

  1. 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:5048ac1ccf26c7c1add345f499d126591feb32289deab6966958bf7b63db084d
shell
kubeadm join 172.25.25.100:9443 \
  --node-name node-2 \
  --token kur85v.lb0g5uzqihfwc7d7 --discovery-token-ca-cert-hash \
  sha256:5048ac1ccf26c7c1add345f499d126591feb32289deab6966958bf7b63db084d