如果你想从Kubernetes集群中删除节点,正确流程如下:
获取节点列表
1 | kubectl get node |
设置不可调度
由于节点目前处于正常工作状态,集群中新建资源还是有可能创建到该节点的,所以先将节点设置为不可调度:
1 | kubectl cordon $node_name |
将节点上资源调度到其他节点
目前集群已经不会分配新的资源在该节点上了,但是节点还运行着现有的业务,所以我们需要将节点上的业务分配到其他节点:
1 | kubectl drain $node_name |
注意:DaemonSet Pod 和 Static Pod 是不会在集群中其他节点重建的。
移除节点
当前集群中已经没有任何资源分配在节点上了,那么我们可以直接移除节点:
1 | kubectl delete $node_name |
至此,我们平滑移除了一个 k8s 节点。如果移除的是一个 master 节点,那么记得之后还要添加一个新的 master 节点到集群中,避免集群可靠性降低。