当您不再需要某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),再对节点进行移除操作。Pod Disruption Budget(PDB)配置:节点排水操作会在遵循PDB的前提下将节点上的Pod驱逐至其他可用节点。请检查并调整或删除PDB规则,避免排水异常。
同时释放 ECS
节点移除后同时释放ECS实例及其数据盘。请提前做好数据备份。 若不选择,对应的ECS实例仍会继续计费。
仅释放按量付费类型的ECS实例及其数据盘,不被释放的ECS实例会继续收费。
包年包月的ECS实例会在计费周期到期后自动释放。您可以在ECS实例到期前申请退款,提前释放实例,或将包年包月实例转按量付费实例后释放。
操作步骤
从节点池中移除
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
单击目标节点池名称,在节点管理页面选中目标节点,单击页面下方的批量移除。
选择是否需要自动排空节点(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
查看。
相关文档
您也可以通过OpenAPI移除节点,请参见RemoveNodePoolNodes - 移除节点池节点、DeleteClusterNodes - 移除集群节点。
如需将游离节点纳入节点池进行管理,请参见迁移游离节点至节点池。
ACK支持通过调整节点池的期望节点数手动实现节点池扩缩容,将节点数目维持在期望数量,请参见手动扩缩容节点池。
如果购买ECS实例后需将该云服务器添加到ACK集群中作为Worker节点,或移除Worker节点后需将节点实例重新加入节点池,您可以在容器服务管理控制台自动添加或手动添加节点,请参见添加已有节点。
如需重置ECS实例或清除系统盘的数据,请参见重新初始化系统盘(重置操作系统)。