【Kubernetes】云原生小技巧 18 之 kubectl drain 命令

79 阅读1分钟

当需要对集群中的某个节点进行维护(如升级或修复),同时避免影响集群服务并将负载转移到其他节点时,可以使用 kubectl drain 命令。它会安全地将节点上的 Pod 移出,并将该节点标记为不可调度,确保维护期间服务不受影响。下面我们一起来看看如何使用吧!

1、kubectl drain 命令使用场景

  • 节点维护:在对节点进行升级、修复或其他维护任务之前,将其上运行的所有 Pods 迁移到其他节点
  • 故障恢复:如果节点存在问题并且你需要对其进行故障排除,首先可以将该节点的负载转移出去
  • 集群资源管理:在重新分配节点资源时,可以使用 drain 命令安全地将工作负载驱逐到其他可用节点

2、kubectl drain 命令的基本用法

# <nodename>:需要驱逐的节点名
# [options]:可选参数,例如 --ignore-daemonsets--delete-emptydir-data 等
kubectl drain <nodename> [options]

3、使用 kubectl drain 命令

# 查看帮助命令
kubectl drain --help
 
# 强制驱逐 node1 上的 pod
kubectl drain node1 --force
 
# 有 10 分钟的宽限期驱逐 node1 上的 pod
kubectl drain node1 --grace-period=600
 
# 不驱逐由 DaemonSet 管理的 Pod,强制删除使用 emptyDir 卷的 Pod
kubectl drain node1 --ignore-daemonsets --delete-emptydir-data