当您不再需要该节点继续工作时,可以通过以下操作移除节点。
前提条件
- 已创建Kubernetes集群。具体操作,请参见创建Kubernetes专有版集群。
- 已通过kubectl连接Kubernetes集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
工作原理
节点池移除节点是指将集群中的节点移出集群,并同时调整期望节点数,调整后期望节点数为原期望节点数减去移除节点数。修改期望节点数,请参见扩缩容节点池。
您可以通过勾选:
- 同时释放ECS:节点移出集群后释放实例。重要 包年包月实例不会被释放。
- 自动排空节点:节点移出集群前对节点进行排水。说明 移除节点任务的超时时间为30min。如果您的Pod中配置了较大的terminationGracePeriodSeconds(优雅退出时间),移除节点任务可能会因超时导致失败。排水失败后移除节点任务将会立即暂停并退出,不会执行后续的移除步骤。因此如果您的业务Pod对优雅退出时间要求较高,您可以先通过执行命令
kubectl drain [node-name] [options]
手动排水再驱逐节点,待节点上没有业务Pod运行后,取消勾选自动排空节点选项,对节点进行移除操作。
节点池移除节点将依次执行以下步骤:
- 如果勾选了自动排空节点,则会优先对节点进行排水。如果排水失败,移除节点任务将立即暂停并退出。因此请您在做移除节点操作前,确保其他节点资源充足,避免业务无法调度的问题。您也可以通过执行
kubectl drain [node-name] [options]
命令,在移除节点前自行对节点进行排水,并在移除节点时不勾选自动排空节点。 - 将节点从APIServer移除。
- 将节点从ESS伸缩组移除并释放(是否会释放取决于是否勾选同时释放ECS)。如果节点是包年包月的节点,即使勾选了同时释放ECS,也不会释放。需要您在移除节点完成后通过ECS控制台或接口手动处理。如果节点是按量付费节点,且您在移除节点时,勾选了同时释放ECS,则会立即释放ECS节点,请您提前做好数据备份。
使用说明
- 移除节点会涉及Pod迁移,可能会影响业务,请在业务低峰期操作。
- 操作过程中可能存在非预期风险,请提前做好相关的数据备份。
- 操作过程中,后台会把当前节点设置为不可调度状态。
- 移除节点仅移除Worker节点,不会移除Master节点。
- 移除节点请通过控制台进行操作,如果使用kubectl delete node方式手动移除节点,则:
- 移除后的节点无法再添加到其他集群上。
- 删除集群时,该节点所在的ECS实例会被释放。
- 如果您没有通过容器服务控制台,而是直接在ECS或者ESS控制台(或相关API)主动释放节点、移除实例,或者因包年包月到期而被动释放节点,节点池为了能够将节点个数维持在期望节点数,会根据相应节点池配置自动扩容到期望节点数。因此,如您需要更改节点池节点数,请通过调整期望节点数,或者移除节点来更改。
操作步骤
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
- 在节点池页面,单击目标节点池名称。在节点管理页签中,选中目标节点,并单击移除节点。
- 可选:在移除节点对话框中,可选中同时释放ECS和自动排空节点(drain)。
- 同时释放ECS:
- 仅释放按量付费类型的ECS实例,不被释放的ECS会继续收费。
- 对于预付费ECS实例,计费周期到期后,ECS实例会自动释放。
- 若不选择同时释放ECS,该节点所在的ECS实例会继续计费。
- 自动排空节点(drain):把待移除节点上的Pod转移到其他节点。请确保集群其他节点的资源充足。您还可以通过执行命令
kubectl drain node-name [options]
的方式把待移除节点上的Pod转移到其他节点。说明- node-name格式为your-region-name.node-id。
your-region-name为您集群所在的地域名称。node-id为待移除节点所在的ECS实例ID。例如,cn-hangzhou.i-xxx 。
options
为该命令的可选配置参数。例如,可配置为--force --ignore-daemonsets --delete-local-data
。更多信息,请执行命令kubectl drain --help
查看。
- node-name格式为your-region-name.node-id。
- 同时释放ECS:
- 单击确定。说明 如果提示节点移除失败,取消勾选同时释放ECS和自动排空节点(drain)后重新移除。
常见问题
问题现象
节点管理页面没有目标节点,但目标节点属于集群。
解决方案
您可以通过以下方式移除节点。
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
- 在节点页面,选中所有要移除的节点,单击批量移除。
- 在弹出页面确认相关信息,单击确定。