手动轮转 Master 节点

容器服务 Kubernetes 版已于 2024 年 08 月 21 日起停止ACK专有集群的创建。推荐您在生产环境中使用具有更高可靠性、安全性和调度效率的ACK托管集群Pro

重要

如需操作协助,请提交工单联系ACK技术支持。

如需新建集群,请参见创建ACK托管集群Pro;如需迁移集群,请参见热迁移ACK专有集群至ACK托管集群Pro

如果由于以下特殊原因不便迁移至ACK托管集群,您可参见本文手动轮转 Master 节点,更新配置。

  • 当前 Master 节点仍在使用 CentOS、Alibaba Cloud Linux 2 等停止维护的操作系统,期望使用Alibaba Cloud Linux 3 容器优化版

  • 当前 Master 节点集中在某几个可用区,期望分散至更多可用区。

  • 期望更换 Master 节点至其他可用区。

前提条件

  • 轮转 Master 节点依赖于 ECS 云助手登录节点操作。请确认当前集群 Master 节点云助手状态均属于正常状态。

    如有异常,请参见查看云助手状态及异常状态处理处理。
  • Master 节点的 etcd 均处于健康状态。

    您可以登录 Master 节点后执行以下命令,查看状态是否正常。

    请将local_ip需要替换为Master节点实例的IP地址。

    ETCDCTL_API=3 etcdctl --cacert=/var/lib/etcd/cert/ca.pem --cert=/var/lib/etcd/cert/etcd-server.pem --key=/var/lib/etcd/cert/etcd-server-key.pem --endpoints=https://${local_ip}:2379 endpoint --cluster health
  • 集群 kube-system 命名空间下存在 ack-admin-config ConfigMap。

    如不存在,请手动安装

    请执行如下命令手动安装:

    wget https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/pkg/ackadmin/ackadmin-1.0-linux-amd64.tar.gz
    tar -xvf ackadmin-1.0-linux-amd64.tar.gz
    cp pkg/ackadmin/1.0/ackadmin /usr/local/bin/ackadmin
    
    /usr/local/bin/ackadmin config-migrate-from-current-pod --clusterId=${CLUSTER_ID} -v 3 # 请将${CLUSTER_ID}替换为实际集群ID。
如不满足前提条件,请提交工单

注意事项

  • 操作前建议使用备份中心对集群应用进行备份。

  • 创建集群时通过集群 API Server CLB 负载均衡暴露的 SSH 运维端口会随着 Master 节点的释放而解除绑定。如需继续使用 SSH 端口运维,请登录传统型负载均衡CLB控制台对 API Server CLB SSH 运维端口的后端虚拟服务器组进行手动挂载。

  • 请在业务低峰期执行轮转操作。执行轮转操作期间,请避免对集群进行其他变更操作,例如集群升级、应用发布等,以免引发非预期的结果。

开始操作前,您可以调用 DescribeClusterDetail 查询控制面配置(control_plane_config)和交换机配置(vswitch_ids)。新扩容出的Master节点将默认使用控制面配置,其可用区由vswitch_ids中指定的交换机和当前Master节点分布的可用区情况共同决定。

更换Master节点的操作系统

示例流程如下。

以下流程以更换至Alibaba Cloud Linux 3 容器优化版为例,该操作系统镜像仅支持1.26及以上版本的集群。
image
  1. 调用 ModifyCluster 修改集群 Master 节点的操作系统类型。

    {
      "control_plane_config": {
        "image_type":"AliyunLinux3ContainerOptimized"
      }
    }
  2. 调用 DescribeClusterDetail 查询上述配置是否提交成功。如果返回 control_plane_config 字段下 image_typeAliyunLinux3ContainerOptimized,则表明配置变更成功。此时新扩容 Master 节点将会使用 Alibaba Cloud Linux 3 容器优化版操作系统。

  3. 调用 ModifyCluster 扩容 Master 节点,在当前 Master 节点数量上增加 1。

    如当前 Master 节点数为 3 个,请增加到 4 个。
    {
        "control_plane_config": {
            "size": 4
        }
    }
  4. 登录容器服务管理控制台集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点在节点列表等待 Master 扩容完毕,确认新创建 Master 节点的操作系统符合预期,且节点状态和业务运行状态正常。

  5. 如状态正常,调用 DeleteClusterNodes 移除一个旧的 Master 节点。注意事项请参见DeleteClusterNodes接口说明

  6. 如状态正常,重复步骤 3 到 5,直至所有 Master 节点更新完毕。

更换Master节点的可用区

示例流程如下。

image
  1. 调用 ModifyCluster 修改集群控制面交换机配置,在 vswitch-ids 中指定希望扩容出的 Master 节点所处可用区的交换机。

    {
      "vswitch_ids": [
        "vsw-id"
      ]
    }
  2. 调用 DescribeClusterDetail 查询上述配置是否提交成功。如返回 vswitch_ids 字段为上述提交的值,则表明配置变更成功。此时新扩容 Master 节点将会使用新配置的可用区。

  3. 调用 ModifyCluster 扩容 Master 节点 ,在当前 Master 节点数上增加 1。

    如当前 Master 节点数为 3 个,请增加到 4 个。
    {
        "control_plane_config": {
            "size": 4
        }
    }
  4. 登录容器服务管理控制台集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点在节点列表等待 Master 扩容完毕,确认新创建 Master 节点的可用区符合预期,且节点状态和业务运行状态正常。

  5. 如状态正常,调用 DeleteClusterNodes 移除一个旧的 Master 节点。注意事项请参见DeleteClusterNodes接口说明

  6. (可选)如需更换其他Master节点可用区,重复上述所有步骤,直到所有 Master 节点均分布到新可用区中。