当我们需要维护或升级节点时,如何避免新工作负载被调度到该节点呢?kubectl cordon 命令可以将 Kubernetes 节点标记为不可调度状态,阻止新 Pod 被分配到该节点,但已运行的 Pod 不会受到影响。下面我们一起来看看如何使用吧!
目录
2、kubectl cordon/uncordon 命令的基本用法
3、举例使用 kubectl cordon/uncordon 命令
1、kubectl cordon 命令使用场景
-
节点维护:在进行节点升级或维护之前,确保不再有新的 Pod 在该节点上运行
-
节点故障处理:在确认节点异常但还在运行时,可先执行 cordon 操作,将新 Pod 阻止调度到该节点上,等到问题解决后再 uncordon 重新允许调度
-
集群资源管理:在某些情况下,可以为了优化资源使用,将某些节点设置为不可调度
2、kubectl cordon/uncordon 命令的基本用法
# 标记节点为不可调度
kubectl cordon <nodename>
# 恢复节点可调度
kubectl uncordon <nodename>
3、举例使用 kubectl cordon/uncordon 命令
-
假设要维护 node1 节点,步骤如下
# 标记 node1 节点为不可调度
kubectl cordon node1
# 查看 node1 节点状态,STATUS 列显示 SchedulingDisabled(不可调度)
kubectl get nodes | grep node1
# 排空节点(kubectl drain 命令下期介绍)
# --ignore-daemonsets:不驱逐由 DaemonSet 管理的 Pod
# --delete-emptydir-data:若 Pod 使用 emptyDir 卷将强制删除
kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
# 维护完成后恢复节点可调度
kubectl uncordon node1