将ACK专有集群热迁移至ACK托管集群Pro版

更新时间:2025-03-06 05:11:51

您可以将ACK专有集群热迁移至ACK托管集群Pro。热迁移无需中断业务,不影响集群业务的正常运行。

容器服务 Kubernetes 版已于20240821日起停止ACK专有集群的创建。推荐您在生产环境中使用具有更高可靠性、安全性和调度效率的ACK托管集群Pro,以享受ACK托管集群Pro的功能和特性,例如控制面托管、高可用等。

前提条件

  • 已有ACK专有集群(待迁移集群),且版本为1.18及以上。如需升级集群,请参见手动升级集群

    迁移后,集群版本保持不变,集群不会进行强制升级。如同时有迁移集群和升级集群版本的需求,建议先完成迁移,再升级集群版本
  • 已在待迁移集群的同一地域下创建一个OSS Bucket,且没有为该Bucket设置防盗链(防盗链可能导致迁移失败)。更多信息,请参见创建存储空间防盗链

注意事项

注意项

说明

注意项

说明

计费说明

  • 集群迁移成功后,涉及的计费会发生变化,已经移除的Master节点的费用将不再收取,同时将新增收取集群管理费用(由ACK收取),其他云资源计费保持不变。

  • 创建存储空间本身不收取任何费用,仅收取上传至存储空间中Object的少量存储费用或者访问Object产生的流量费用等,请参见计费概述

公网访问

  • 集群迁移成功后,通过EIP暴露 API Server实现公网访问的的集群,访问集群地址不会发生变化。

  • 部分早期ACK专有集群使用公网SLB访问API Server,此类集群迁移到ACK托管集群Pro后需手动切换为EIP模式(将EIP绑定到API Server内网CLB),具体操作,请参见控制集群API Server的公网访问能力

Pod自定义配置

启用Pod自定义配置的ACK专有集群不能直接迁移至ACK托管集群Pro。您需要在迁移前停止terway-controlplane,在迁移后重新启用terway-controlplane。具体操作, 请参见ACK专有集群迁移时,停止terway-controlplane,关于如何自定义配置Pod,请参见Pod配置固定IP及独立虚拟交换机、安全组

Master节点

部分早期集群的Master节点未默认安装云助手,需手动安装。具体操作,请参见安装云助手Agent。集群迁移完成后,Master节点将变为Not Ready 。

ECS实例释放

删除迁移后的Master节点时,ACK仅释放按量付费类型的ECS实例及其数据盘。包年包月类型需手动释放。包年包月类型的ECS实例需手动释放。具体操作,请参见释放实例

步骤一:热迁移ACK专有集群ACK托管集群Pro

完成前提条件中的准备工作和相关注意事项后,您可以开始迁移。热迁移后的ACK托管集群Pro无法回退至ACK专有集群

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面的操作列,单击待迁移集群对应的更多>迁移至Pro

  3. 迁移至Pro对话框,完成前置检查和RAM授权,选择为热迁移准备的OSS Bucket的名称,仔细阅读迁移注意事项,然后单击确定

    展开查看如何完成前置检查

    单击前置检查,跳转至容器智能运维控制台,然后单击执行迁移检查,在面板中确认检查项后勾选我已知晓并同意,然后单击执行检查

    如前置检查未通过,可按照控制台页面指引修复问题。

    前置检查.png

    展开查看如何完成热迁移RAM授权

    1. 单击访问控制台(RAM),前往完成热迁移所需的授权。同时,获取OSS Bucket名称,供下一步策略内容修改使用。migrate

    2. 单击以k8sMasterRolePolicy开头的任一授权策略名称,在策略详情页的策略内容页签,单击修改策略内容,然后在脚本编辑区域的Statement字段中补充以下策略内容,然后单击确定

      请将以下代码中的<YOUR_BUCKET_NAME>替换为您在该地域下为目标集群创建的Bucket的名称(删去<>),即在迁移至Pro对话框指定的Bucket的名称。

      ,
              {
                  "Action": [
                      "oss:PutObject",
                      "oss:GetObject"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<YOUR_BUCKET_NAME>/*"  
                  ]
              }

    迁移完成后,迁移至Pro对话框将提示迁移已完成。您可以观察集群类型和Master节点状态变更。

    • 集群类型:返回集群列表页面,在集群类型列查看类型由ACK专有集群自动变更为ACK托管集群,且集群规格列显示为Pro

    • Master节点状态:在集群列表页面的操作列,单击目标集群对应的详情,然后在左侧导航栏单击节点管理>节点。在节点列表的角色/状态列下,查看原有的Master节点状态变成未知,表明该Master节点已脱离集群,终止使用。您可以参见步骤二:移除ACK专有集群热迁移后的Master节点,移除集群热迁移后的Master节点。

步骤二:移除ACK专有集群热迁移后的Master节点

完成热迁移后,您可以通过控制台或kubectl命令手动将Master节点从ACK专有集群中移除。

控制台
kubectl
  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点

  3. 节点页面的操作列,单击待移除Master节点对应的更多>移除,或选中多个Master节点后单击下方的批量移除,然后按照对话框指引选择配置,仔细阅读对话框的注意事项,并单击确定

执行命令前,请确保已通过kubectl连接集群。体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群

  1. 查看并记录待移除的Master节点名称。

    kubectl get node | grep control-plane
  2. 移除目标Master节点,将<MASTER_NAME>替换为上一步记录的Master节点名称。

    kubectl delete node <MASTER_NAME>

    如需批量删除多个Master节点,可将以下命令中的多个<MASTER_NAME>替换。例如,需要同时删除Master节点cn-hangzhou.192.xx.xx.65cn-hangzhou.192.xx.xx.66时,示例代码如下。

    kubectl delete node cn-hangzhou.192.xx.xx.65 cn-hangzhou.192.xx.xx.66

(可选)步骤三:组件处理

ACK专有集群中确认是否安装了ALB Ingress Controller组件或ack-virtual-node组件,如有,则需要重新安装或迁移。

  1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  2. 组件管理页面确认,如果ACK专有集群中安装了ALB Ingress Controller组件或ack-virtual-node组件,请参考以下方法处理。

    重新安装ALB Ingress Controller组件

    ACK专有集群中安装了组件ALB Ingress Controller,您需要在迁移成功后重新安装该组件。关于如何安装ALB Ingress Controller组件,请参见管理组件

    安装完成后,通过以下命令删除原来的应用,确保已通过kubectl连接集群。详细信息,请参见获取集群KubeConfig并通过kubectl工具连接集群

    kubectl delete deployment alb-ingress-controller -n kube-system

    迁移ack-virtual-node至托管版

    ACK专有集群中安装了ACK Virtual Node组件,为实现业务无缝迁移,您需要在集群迁移成功后,将ACK Virtual Node组件也迁移至托管版。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

    3. 组件管理页面,安装ACK Virtual Node组件。

    4. ACK Virtual Node组件安装完成后,请依次执行以下命令,清除不再需要的旧组件和配置。

      # 依次删除旧的vk-webhook服务、ack-virtual-node-controller部署、虚拟节点相关的ClusterRoleBinding、虚拟节点的服务账户。
      kubectl -n kube-system delete service vk-webhook
      kubectl -n kube-system delete deployment ack-virtual-node-controller
      kubectl -n kube-system delete clusterrolebinding virtual-kubelet
      kubectl -n kube-system delete serviceaccount virtual-kubelet
    5. 迁移完成后,您可以通过创建新Pod测试集群是否正常运行。

后续步骤

常见问题

迁移过程中ACK专有集群的业务是否受影响?

集群迁移过程中会休眠ACK专有集群的控制面组件,但不影响正在运行的业务。

迁移流程大概需要多长时间?

集群迁移主要包括控制面休眠、etcd数据备份以及托管侧组件启动三个阶段。整体流程预计耗时10~15分钟,其中API Server不可用时间预计持续5~10分钟。

集群迁移后,访问链路是否会发生变化

迁移后,API Server CLB IP地址不会改变,通过KubeConfig访问集群时,集群地址不发生变化。

前置检查ACK Virtual Node环境变量配置失败如何处理

若在ACK专有集群中安装了ACK Virtual Node组件,需要在迁移前手动配置kube-apiserver内网端点。具体操作如下:

  1. 集群信息页面,获取kube-apiserver内网端点信息。

  2. 无状态页面的kube-system命名空间下,找到名为ack-virtual-node-controllerDeployment,然后为该Deploymentspec.template.spec.containers[0].env字段添加如下环境变量:

    • KUBERNETES_APISERVER_HOSTkube-apiserver内网IP地址。

    • KUBERNETES_APISERVER_PORTkube-apiserver内网端口,通常取值为6443。

  • 本页导读 (1)
  • 前提条件
  • 注意事项
  • 步骤一:热迁移ACK专有集群至ACK托管集群Pro版
  • 步骤二:移除ACK专有集群热迁移后的Master节点
  • (可选)步骤三:组件处理
  • 重新安装ALB Ingress Controller组件
  • 迁移ack-virtual-node至托管版
  • 后续步骤
  • 常见问题
  • 迁移过程中ACK专有集群的业务是否受影响?
  • 迁移流程大概需要多长时间?
  • 集群迁移后,访问链路是否会发生变化
  • 前置检查ACK Virtual Node环境变量配置失败如何处理
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等