- 将节点设置为不可调度,防止新的Pod调度到该节点上。
1kubectl cordon <节点名>
- 排空节点上的Pod
1 kubectl drain <节点名> --ignore-daemonsets --delete-emptydir-data
- –ignore-daemonsets:允许跳过DaemonSet管理的Pod
- –delete-emptydir-data:允许删除使用emptyDir卷的Pod
可以直接执行kubectl drain操作,省略cordon步骤。 drain会先cordon之后,再尝试优雅地终止该节点上地Pod(排空)。
- 确定节点已排空
1kubectl describe node <节点名> `
其中,
- Unschedulabel:应该显示为true
- Taints:包含node.kubernetes.io/unschedulable:NoSchedule 污点
- Non-terminated Pods:这里应该只列出DaemonSet管理的Pod(如果有的话),其它类型都已驱逐。
- 从集群中删除节点
1kubectl delete node <节点名>