将节点从集群或节点池中移除

当您不再需要某Worker节点继续工作时,可以在容器服务管理控制台将节点从节点池或集群中移除。请参见本文的注意事项和功能说明,在业务低峰期执行标准化操作。

适用场景

  • 节点池功能推出前创建的老集群中,存在未被节点池管理的游离Worker节点。期望从集群中移除该节点。当后续仍需使用时,期望将其添加到已有节点池,便于节点批量运维。

  • 购买新ECS实例后,需要替换节点池中老ECS实例,期望将新实例添加到节点池中运行,将老实例移除。

  • 节点池开启了手动扩容或自动扩容,期望缩容指定的ECS实例,节省资源成本。

  • 需要将一个节点池中的节点迁移到另一个节点池,期望从原节点池中移除对应节点,然后添加到新节点池中。

  • ECS实例需升降配资源,期望移除对应节点,在ECS控制台升降配后再将其添加到节点池中。

  • ECS实例需转换付费类型(例如按量付费转包年包月),期望移除对应节点,在ECS控制台转换后再将其添加到节点池中。

  • 节点异常时,期望通过移除节点再添加到集群中的方式完成节点初始化。

    此操作会通过替盘重置节点(替换节点系统盘)完成,请务必备份系统盘中的重要数据。

注意事项

  • 移除节点时,请在容器服务管理控制台执行标准化操作。请勿使用kubectl delete node方式手动移除节点。

  • 请勿直接在ECS或者ESS控制台(或通过相关API)主动释放节点、移除实例,或因包年包月实例到期而被动释放节点。这些情况下,节点会直接停机,自动从容器服务管理控制台中移除。

    如果节点池设置了期望节点数,为了将节点个数始终维持在期望节点数,节点池会根据相应配置自动扩容其他实例。

  • 移除节点涉及Pod的迁移,可能会影响业务,请在业务低峰期操作。操作过程中可能存在非预期风险,请提前做好相关的数据备份。

  • 移除节点时,ACK会执行排水操作,请确保集群其他节点的资源充足,以避免业务Pod无法调度。

  • 需检查待移除节点上的Pod的节点亲和性规则和调度策略,确保Pod不会因为节点移除而无法调度到其他节点。

功能说明

移除节点是指将某个或某些Worker节点从节点池或集群中移除。如果您的节点池开启了期望节点数(节点池应该维持的总节点数量),节点池会自动调整该数值。

如移除后仍需将实例添加到集群中,请参见自动或手动添加节点

移除前,支持按需选择是否自动排空节点(将节点上的Pod安全驱逐到其他节点)以及是否同时释放ECS(释放ECS实例及其数据盘)。

自动排空节点(drain)

节点移除前,对节点进行排水,将节点上的Pod安全地驱逐到其他节点,避免服务中断。执行操作前,请确保集群其他节点的资源充足,以避免业务Pod无法调度。同时关注以下注意事项。

  • 优雅退出时间配置:移除节点时,系统默认的 Pod 优雅退出超时时间为 30 分钟。 即使 Pod 自身配置了更长的terminationGracePeriodSeconds优雅退出时间(例如 40 分钟),系统也会优先遵循 30 分钟的超时时间。 超过 30 分钟后,即使 Pod 尚未完成优雅退出,系统会强制中断并判定排水失败,停止后续的节点移除操作,需要手动重试。

    如业务Pod对优雅退出时间要求较高,建议先通过kubectl drain <nodeName> [options]手动排水再驱逐节点。待节点上没有业务Pod运行后,取消勾选自动排空节点(drain),再对节点进行移除操作。

    展开查看命令说明

    • <nodeName>格式为<your-region-name>.<node-id>

      <your-region-name>:您集群所在的地域名称;<node-id>:待移除节点所在的ECS实例ID。例如,cn-hangzhou.i-i-bp1asavedmte377c3**** 。

    • options:可选配置参数。例如,可配置为--force --ignore-daemonsets --delete-local-data。更多方式,可执行命令kubectl drain --help查看。

  • Pod Disruption Budget(PDB)配置:节点排水操作会在遵循PDB的前提下将节点上的Pod驱逐至其他可用节点。请检查并调整或删除PDB规则,避免排水异常。

同时释放 ECS

节点移除后同时释放ECS实例及其数据盘。请提前做好数据备份。 若不选择,对应的ECS实例仍会继续计费。

  • 仅释放按量付费类型的ECS实例及其数据盘,不被释放的ECS实例会继续收费。

  • 包年包月的ECS实例会在计费周期到期后自动释放。您可以在ECS实例到期前申请退款,提前释放实例,或将包年包月实例转按量付费实例后释放。

操作步骤

从节点池中移除

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

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

  3. 单击目标节点池名称,在节点管理页面选中目标节点,单击页面下方的批量移除

  4. 选择是否需要自动排空节点(drain)同时释放 ECS,仔细阅读页面注意事项后按照页面提示完成操作。

    关于自动排空节点(drain)同时释放 ECS的注意事项,请参见上文的功能说明

从集群中移除

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

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

  3. 选中目标节点,单击页面下方的批量移除

  4. 选择是否需要自动排空节点(drain)同时释放 ECS,仔细阅读页面注意事项后按照页面提示完成操作。

    关于自动排空节点(drain)同时释放 ECS的注意事项,请参见上文的功能说明

常见问题

节点移除失败如何处理?

节点可能会因为优雅退出时间、PDB配置等原因移除失败,请参见前文的功能说明。此时,建议先通过kubectl drain <nodeName> [options]手动排水再驱逐节点。待节点上没有业务Pod运行后,再对节点进行移除操作。

  • <nodeName>格式为<your-region-name>.<node-id>

    <your-region-name>:您集群所在的地域名称;<node-id>:待移除节点所在的ECS实例ID。例如,cn-hangzhou.i-i-bp1asavedmte377c3**** 。

  • options:可选配置参数。例如,可配置为--force --ignore-daemonsets --delete-local-data。更多方式,可执行命令kubectl drain --help查看。

相关文档