1. 将节点设置为不可调度,防止新的Pod调度到该节点上。
1kubectl cordon <节点名>
  1. 排空节点上的Pod
1 kubectl drain <节点名> --ignore-daemonsets --delete-emptydir-data
  • –ignore-daemonsets:允许跳过DaemonSet管理的Pod
  • –delete-emptydir-data:允许删除使用emptyDir卷的Pod

可以直接执行kubectl drain操作,省略cordon步骤。 drain会先cordon之后,再尝试优雅地终止该节点上地Pod(排空)。

  1. 确定节点已排空
1kubectl describe node <节点名>      `

其中,

  • Unschedulabel:应该显示为true
  • Taints:包含node.kubernetes.io/unschedulable:NoSchedule 污点
  • Non-terminated Pods:这里应该只列出DaemonSet管理的Pod(如果有的话),其它类型都已驱逐。
  1. 从集群中删除节点
1kubectl delete node <节点名>