kubectl drain 命令用于排空一个节点并暂时停止其调度新的 Pod。该命令可以让 Kubernetes 集群在维护节点、升级或删除节点等情况下更加健壮。
当需要对某个节点进行维护或者移除时,可以使用 kubectl drain 命令,它会按以下步骤操作:
- 将该节点上已经存在的 Pod 根据一定策略迁移到其他可用的节点上。
- 禁止该节点调度新的 Pod。
这样,在完成维护工作后,就可以使用 kubectl uncordon 恢复该节点的调度状态,允许新的 Pod 调度到该节点上。
例如,要排空名为 node-1 的节点并暂停其调度状态,可以执行以下命令:
kubectl drain node-1
如果要强制删除所有 Pod 并排空此节点,则可以添加 --force
和 --ignore-daemonsets
选项。例如:
kubectl drain node-1 --force --ignore-daemonsets
注意:--force
选项将导致所有正在运行的 Pod 强制终止,并且可能会导致数据丢失。因此,请确保在使用此选项之前备份重要数据。