将已有 ECS 实例添加至节点池

您可将已购买的 ECS 实例作为 Worker 节点添加到集群中,或将已移除的 Worker 节点重新加入到节点池。此操作可以在不中断集群现有业务的前提下,实现计算资源的快速复用。

ACK 提供自动和手动两种添加方式。添加后实例的付费类型和规格保持不变。

对比项

自动添加

手动添加

操作系统重置

根据节点池当前配置,重置并初始化实例的操作系统。

  • 原系统盘会被释放,数据会丢失。

  • 系统盘的手动快照会保留,自动快照的保留取决于是否配置了自动快照随云盘释放

    可登录ECS管理控制台,参见设置自动快照随云盘释放进行配置。
  • 原数据盘不会被释放,其中数据不受影响,但磁盘ID会发生变更。

保留实例原有操作系统,提供更高灵活性。

适用场景

期望实例与节点池配置保持一致,实现标准化管理。

需要保留实例现有操作系统或特定配置。

使用限制

操作前,请确认当前环境和实例满足以下条件。

分类

限制项

说明

实例与节点池

集群节点配额

集群的总节点数不能超过配额上限。如需提升上限,请前往配额中心

ACK托管集群基础版默认节点配额为10个。

实例归属

实例与集群处于同一账号、同一地域、同一 VPC 下。否则请迁移实例,或者重新创建符合要求的实例或集群。

不支持添加VPC对等连接另一端的 ECS 实例。

集群归属

不支持添加已属于其他 ACK 集群的实例。请先从原集群移除节点,再添加到新集群。

弹性伸缩组(ESS)归属

不支持添加已归属于其他伸缩组的实例,需从伸缩组中手动移出后重试。

节点池类型

操作系统

  • 操作系统不支持启用Swap。

  • 手动添加时,不支持添加操作系统WindowsContainerOS的实例。

实例类型

神龙裸金属GPU实例(ECS规格族为ebmgn7ebmgn7e)不支持自动MIG清理。添加该类型实例时会重置已有的MIG设置,可能由于重置时间过长导致自动添加节点失败。

排查方法请参见裸金属实例节点添加失败怎么办?

网络

API Server访问

实例IP地址必须在API Server访问白名单中,否则无法与控制面通信。详情请参见配置API Server的访问控制策略

安全组

  • 类型一致:实例的安全组类型(普通或企业安全组)必须与节点池一致。

  • 规则兼容:实例安全组需允许访问 API Server 内网地址和 6443 端口,且规则不能与集群及节点池的安全组规则冲突。

    可在集群信息页面的基本信息页签查看API Server 内网地址。
  • 配额上限:实例加入的安全组数量不能超过安全组配额

如需更换实例安全组类型或提前将实例加入到节点池安全组中,请参见为实例(主网卡)关联安全组;如需提升安全组配额上限,请参见查看或提升云服务器 ECS配额

Terway-最大Pod

实例支持的最大Pod数必须满足以下条件:

不同ENI模式支持的最大Pod数取决于实例支持的最大ENI数量。计算方式,请参见节点Pod限额计算方法

如不满足,请升降配节点资源或重新购买实例

Terway-vSwitch配置

实例与节点池处于不同可用区时,需同步更新TerwayvSwitch配置。否则,Terway将从节点主网卡所属的vSwitch分配Pod IP,可能导致Pod IP分配异常。具体操作,请参见修改Pod虚拟交换机

Terway-ENI

添加时,实例已绑定的ENI会被保留,Pod IP将从这些ENI关联的vSwitch上分配。请确保实例只有一个主网卡。

如有Pod IP不属于已配置的vSwitch,请在集群中移除节点,删除除主网卡外的辅助网卡,再重新加入集群。

Terway-Worker RAM 角色

待添加实例需已绑定节点池的Worker RAM角色,避免因权限问题无法正确计算节点最大可用Pod数(MaxPod)。

可在节点池页面单击节点池名称,在基本信息页签下查看节点池的Worker RAM角色。可参见ECS实例授予RAM角色完成RAM角色的授权。

Terway-IPv6双栈

集群开启IPv6双栈时,需为实例主网卡分配一个IPv6地址,请参见IPv6通信

Flannel

集群VPC的系统路由表自定义路由条目数量不能超过路由表配额。如需调整,请前往配额中心

注意事项

  • 数据备份:操作前,建议为实例的系统盘和数据盘创建快照备份,以免数据丢失。

    为确保快照额度充足,建议提前清理无需使用的手动快照和自动快照,以便顺利完成快照创建。

  • 实例释放和计费:针对未开启期望节点数的节点池,添加到节点池的实例不会随集群或节点池的删除而释放,需手动移除节点。请关注ECS计费状态,避免产生额外计费。

操作步骤

耗时:节点添加过程涉及系统盘替换(仅自动添加涉及)和节点初始化,耗时约为5分钟。实际可能受网络状况、操作系统大小等因素影响。

添加已有节点并不影响集群存量节点和应用的运行。为避免兼容性问题,不建议将已创建服务的ECS实例初始化为Worker节点。

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

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

  3. 节点池页面,单击目标节点池右侧操作列下的image,然后单击添加已有节点

    如果云服务器列表中无目标ECS实例,表明ECS实例不满足添加到集群的条件。可勾选显示不可用的实例,查看不可用的ECS实例及原因。详细原因请参见上文的使用限制注意事项
  4. 仔细阅读页面注意事项,然后选择节点添加方式。

手动添加节点

此方式需获取安装命令,登录到对应的实例上进行安装。每次只能添加一个ECS实例。

  1. 选择添加方式手动添加,在已有云服务器列表选择待添加的ECS实例,然后单击下一步

  2. 填写实例信息页面,按照页面提示确认集群、实例信息,并配置数据盘和实例名称,然后单击下一步,按照页面提示完成实例的添加。

    配置项

    说明

    数据盘挂载

    是否将容器和镜像数据存储在数据盘,以实现系统盘与数据盘分离,提升稳定性。

    • 如果ECS已挂载数据盘,且最后一块数据盘的文件系统未初始化,ACK会自动将最后一块数据盘格式化为ext4文件系统,专用于存放/var/lib/containerd或/var/lib/docker(容器运行时默认数据目录),以及/var/lib/kubelet(kubelet组件默认数据目录)。

      重要
      • 被格式化的数据盘内原有数据将会丢失,建议提前创建快照备份数据。

      • 如需将容器和镜像存储在数据盘,文件系统仅支持ext4xfs。

    • 如果ECS未挂载数据盘,无论是否勾选,ACK都不会自动挂载新数据盘。

    保留实例名称

    • 开启:使用实例名称作为节点名称。

    • 不开启:ACK会按照自定义节点名称指定的规则来重命名节点。

  3. 添加完成页面,复制ACK自动生成的节点接入命令,供后续步骤使用,然后单击完成

  4. 登录ECS管理控制台,单击左侧导航栏中的实例与镜像 > 实例,选择集群所在地域,选择目标实例。

  5. 单击目标实例对应的远程连接,选择远程连接方式后进入ECS远程连接界面。

  6. 根据页面指引,输入并执行步骤3复制的脚本,以将实例自动配置并加入集群。

    脚本执行成功后,页面将提示节点添加成功。可在节点列表等待节点初始化完成,直至转为就绪状态。

    image

自动添加节点

您可以在控制台界面完成实例的自动添加。

  1. 选择添加方式自动添加,在已有云服务器的列表中,选择所需的ECS云服务器,然后单击下一步

  2. 填写实例信息页面,按照页面提示确认集群、实例信息,并配置数据盘和实例名称,然后单击下一步

    配置项

    说明

    数据盘挂载

    是否将容器和镜像数据存储在数据盘,以实现系统盘与数据盘分离,提升稳定性。

    • 如果ECS已挂载数据盘,且最后一块数据盘的文件系统未初始化,ACK会自动将最后一块数据盘格式化为ext4文件系统,专用于存放/var/lib/containerd或/var/lib/docker(容器运行时默认数据目录),以及/var/lib/kubelet(kubelet组件默认数据目录)。

      重要
      • 被格式化的数据盘内原有数据将会丢失,建议提前创建快照备份数据。

      • 如需将容器和镜像存储在数据盘,文件系统仅支持ext4xfs。

    • 如果ECS未挂载数据盘,无论是否勾选,ACK都不会自动挂载新数据盘。

    登录方式及密码

    当节点池的登录方式配置为设置密码时,请重新配置实例密码。

    保留实例名称

    • 开启:使用实例名称作为节点名称。

    • 不开启:ACK会按照自定义节点名称指定的规则来重命名节点。

  3. 在弹出的对话框,仔细阅读注意事项,然后单击确定

    添加后,可在节点列表等待节点初始化完成,直至转为就绪状态。

常见问题

添加已有节点时,是否影响集群存量业务的运行?

添加已有节点,无论是手动添加还是自动添加,都不会影响集群现有业务的运行。

ECS实例加入集群后,后续ECS升降配是否会对集群业务产生影响?

ECS升降配通常包含修改实例规格、修改公网带宽计费方式、修改公网带宽、修改数据盘计费方式等,详情请参见升降配方式概述。不同的升降配方式对于ECS实例的影响不同。

  • 无需重启的升降配操作:需根据实际业务情况判断对业务的影响。

  • 需要重启ECS实例的升降配操作:实例规格升降配等操作会给业务带来有损变更。进行相关操作(升降配节点资源)前,建议先根据实际负载情况,判断是否需要扩容冗余节点用于承接业务Pod,并将需要升降配的节点排水并移除出伸缩组和ACK集群。具体操作,请参见移除节点

    升降配完成后,再重新参见本文将节点添加回集群。

我可以将不同规格的已有节点添加到ACK集群中吗?

可以。ACK允许在同一个节点池中管理多种实例规格的节点,避免因实例规格不可用或库存不足导致节点池弹出节点失败。添加ECS实例前,您需要确保该实例规格已被包含在节点池的规格列表中。流程如下。

  1. 编辑或新建节点池,配置所需的节点规格。具体操作,请参见创建和管理节点池

  2. 参见移除节点完成目标节点的移除和排水(请勿同时释放ECS实例)。

  3. 参见本文的使用限制和操作步骤操作步骤,将不同规格的ECS实例添加到节点池中。

如何跨ACK集群移动节点?

ACK不支持直接跨集群移动节点,但您可以通过添加已有节点的方式来完成。流程如下。

  1. 参见移除节点完成目标节点的移除和排水(请勿同时释放ECS实例)。

  2. 参见本文的使用限制操作步骤,将目标ECS实例添加到节点池中。

ECS实例使用了ACK已经EOL的操作系统,还能加入到节点池中吗?

  • 手动添加:可以将运行了不再受支持的操作系统的已有实例手动添加到节点池。但需确保该实例的操作系统版本与当前集群版本兼容,详情请参见操作系统

    例如,CentOS 7Alibaba Cloud Linux 2仅支持在1.30及以下版本的集群中使用。
  • 自动添加:可以。ACK会使用节点池配置中指定的操作系统镜像来初始化该实例。

添加已有节点时,节点自定义的User Data会被节点池的User Data覆盖吗?

原有实例的User Data是否会被覆盖取决于节点添加方式。

  • 自动添加:ACK会初始化系统盘,原实例的User Data会被覆盖,默认使用节点池的User Data配置。

  • 手动添加:原实例的User Data不会被覆盖。加入节点池后仍然使用原实例的User Data。

添加已有节点后报错,提示timeout,怎么办?

请排查节点与API Server CLB的网络是否可以连通,请先排查安全组是否符合要求。添加已有节点时安全组的使用限制,请参见上文使用限制。关于网络不通的其他问题,请参见网络管理FAQ

添加已有节点后,节点池的期望节点数会自动变化吗?

添加已有节点后,期望节点数会自动增加添加节点的数量。例如,节点池配置的期望节点数5,此时通过添加已有节点的方式在节点池中增加了1ECS实例,那么节点池的期望节点数会自动变为6。

相关文档