手动轮转和更新Master节点

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

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

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

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

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

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

重要

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

适用范围

  • 轮转 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 运维端口的后端虚拟服务器组进行手动挂载。

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

操作步骤

手动轮转Master节点需要“先扩容、后缩容”:首先修改控制面配置,使新扩容的Master节点采用新配置;然后逐一扩容新节点、移除旧节点,直至所有Master节点完成替换。

image
  1. 查询当前配置。

    调用 DescribeClusterDetail 查询控制面配置(control_plane_config)和交换机配置(vswitch_ids),作为后续修改的基础。

    核心参数如下:

    完整参数说明,请参见DescribeClusterDetail - 查询指定集群的信息

    参数

    说明

    vswitch_ids

    集群控制面使用的vSwitch,决定了Master节点所在的可用区。如需指定新Master节点所在可用区,请替换为对应的vSwitch ID。

    image_type

    集群控制面节点使用的操作系统类型。请选择非停止维护的操作系统类型,并了解相关使用限制。

    runtime

    容器运行时。Kubernetes 1.24不再支持将Docker作为内置容器运行时,请使用containerd。

    instance_types

    Master节点的实例规格。请参见ECS实例规格配置建议了解推荐配置。

    size

    Master节点数量,一般为35个。

    展开查看预期输出

    {
        "vswitch_ids": [
            "vsw-bp1c1j6wbqehaiqmz*****"
        ],
        "control_plane_config": {
            "image_type": "AliyunLinux3",
            "node_port_range": "30000-32767",
            "key_pair": "ack",
            "charge_type": "PostPaid",
            "runtime": "containerd",
            "deploymentset_id": "ds-bp10b35imuam5am******", 
            "cloud_monitor_flags": true,
            "instance_types": [
                "ecs.c6.xlarge"
            ],
            "system_disk_category": "cloud_essd",
            "system_disk_size": 50,
            "system_disk_performance_level": "PL1",
            "security_hardening_os": true,
            "size": 3
        }
    }
  2. 修改目标配置。

    根据目标场景,调用 ModifyCluster 修改相应的控制面配置。

    请确保提交了完整的参数配置。
  3. 验证配置变更。

    再次调用 DescribeClusterDetail,查询control_plane_config是否符合预期。此时,新扩容的 Master 节点将默认使用新配置。

  4. 扩容一个新Master节点。

    调用 ModifyCluster,将control_plane_config.size的值在当前基础上加1。例如,从3个增加到4个。

    {
        "control_plane_config": {
            "size": 4
        }
    }
  5. 验证新节点。

    登录容器服务管理控制台集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点,等待 Master 创建完成。确认新节点配置符合预期,且节点状态和业务运行正常。

  6. 移除一个旧Master节点。

    确认集群稳定后,调用 DeleteClusterNodes,传入一个旧Master节点进行移除。注意事项请参见DeleteClusterNodes接口说明

  7. 循环轮转。

    重复步骤3 到 6,直至所有 Master 节点更新完毕。最后,将Master节点数量恢复至初始数量(通常为35)。

场景一:更换Master节点的操作系统

示例流程如下。

以下流程以更换至Alibaba Cloud Linux 3 容器优化版为例,该操作系统镜像仅支持1.26及以上版本的集群。
image
  1. 调用DescribeClusterDetail查询控制面配置(control_plane_config)和交换机配置(vswitch_ids)。

  2. 调用 ModifyCluster 修改集群 Master 节点的操作系统类型。

    请确保提交了完整的参数配置。
    {
        "vswitch_ids": [
            "vsw-bp1c1j6wbqehaiqmz*****"
        ],
        "control_plane_config": {
            // 修改操作系统类型
            "image_type": "AliyunLinux3ContainerOptimized",
            "node_port_range": "30000-32767",
            "key_pair": "ack",
            "charge_type": "PostPaid",
            "runtime": "containerd",
            "deploymentset_id": "ds-bp10b35imuam5am******", 
            "cloud_monitor_flags": true,
            "instance_types": [
                "ecs.c6.xlarge"
            ],
            "system_disk_category": "cloud_essd",
            "system_disk_size": 50,
            "system_disk_performance_level": "PL1",
            "security_hardening_os": true,
            "size": 3
        }
    }
  3. 调用 DescribeClusterDetail 查询上述配置是否提交成功。

    如果返回的 control_plane_config 下的 image_typeAliyunLinux3ContainerOptimized,则表明配置变更成功。此时新扩容的节点将会使用 Alibaba Cloud Linux 3 容器优化版操作系统。

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

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

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

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

场景二:更换Master节点的可用区

示例流程如下。

image
  1. 调用DescribeClusterDetail查询控制面配置(control_plane_config)和交换机配置(vswitch_ids)。

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

    请确保提交了完整的参数配置。
    {
        "vswitch_ids": [
            // 修改为目标可用区对应的 VSwitch ID
            "vsw-bp1c1j6wbqehaiqmz*****"
        ],
        "control_plane_config": {
            "image_type": "AliyunLinux3",
            "node_port_range": "30000-32767",
            "key_pair": "ack",
            "charge_type": "PostPaid",
            "runtime": "containerd",
            "deploymentset_id": "ds-bp10b35imuam5am******", 
            "cloud_monitor_flags": true,
            "instance_types": [
                "ecs.c6.xlarge"
            ],
            "system_disk_category": "cloud_essd",
            "system_disk_size": 50,
            "system_disk_performance_level": "PL1",
            "security_hardening_os": true,
            "size": 3
        }
    }
  3. 调用 DescribeClusterDetail 查询上述配置是否提交成功。

    如返回 vswitch_ids 为上述提交的值,则表明配置变更成功。此时新扩容的节点将会使用新配置的可用区。

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

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

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

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