全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:将ACK专有版集群热迁移至ACK托管集群Pro版

更新时间:Jan 16, 2024

如果您有存量的ACK专有版集群,但同时希望享受ACK集群Pro版的功能和特性,容器服务平台推出了ACK专有版集群ACK集群Pro版的集群热迁移功能,让您可以动态完成迁移。本文介绍如何将ACK专有版集群动态迁移至ACK集群Pro版,以及热迁移后如何移除不再担任相应功能的Master节点。

索引

前提条件

条件项

说明

集群

已有ACK专有版集群(待迁移集群),且集群版本为1.18及以上。如不满足该条件,请升级集群版本。具体操作,请参见升级ACK集群

SLB实例规格

已确保集群的内网SLB实例规格的配置为slb.s1.small及以上。如不满足条件,请升级SLB实例规格。具体操作,请参见按量付费实例变配

展开查看如何查看集群的SLB实例规格

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

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息

  3. 单击集群资源页签,单击API Server 负载均衡(SLB)对应的SLB实例ID跳转至实例详情页签,在付费信息实例规格区域,查看规格。

Pod驱逐

已将除管控面组件(API Server、Kube Controller Manager、Cloud Controller Manager、Scheduler)和其他kube-system中的DaemonSet之外的Pod驱逐到Worker节点上。热迁移后,管控面组件将被托管的组件所替代。

OSS Bucket

已在待迁移集群的同一地域下创建一个OSS的存储空间(Bucket),且没有为该Bucket设置防盗链(防盗链可能导致迁移失败)。更多信息,请参见创建存储空间防盗链

注意事项

注意项

说明

公网访问

部分时间较早的ACK专有版集群仍使用公网SLB访问API Server,此类集群迁移到ACK集群Pro版后无法继续通过公网SLB访问。请手动切换为EIP模式(将EIP绑定到API Server内网SLB),以支持公网访问API Server。关于手动切换EIP模式的具体操作,请参见控制集群API Server的公网访问能力

Pod自定义配置

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

组件处理

若ACK专有版集群中安装了组件ALB Ingress Controller,您需要在迁移成功后重新安装该组件。关于如何安装ALB Ingress Controller组件,请参见管理组件。安装完成后需要通过kubectl删除原来的应用,删除具体操作可以通过执行以下命令完成。执行命令前,请确保您可以使用kubectl命令连接集群。详细信息,请参见获取集群KubeConfig并通过kubectl工具连接集群

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

Master节点

部分时间较早的集群的Master节点未内置云助手,需手动安装。具体操作,请参见安装云助手Agent

无回退机制

热迁移后的ACK集群Pro版无法回退至ACK专有版集群

ECS实例释放

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

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

完成前提条件中的准备工作和相关注意事项后,您可以开始迁移。

  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节点从集群中移除。

方式一:通过控制台移除

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

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

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

方式二:使用kubectl移除

执行命令前,请确保您可以使用kubectl命令连接集群。关于如何使用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.65和cn-hangzhou.192.xx.xx.66,示例代码如下。

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

后续操作