如何在不删除一个K8S节点的情况下,让这个节点暂停调度
也可以用kubectl describe pod pod_name -n namespace去查看,这个命令显示的信息更加详细一些,除了显示被分配到哪个节点,还会显示该pod的配置、状态及event等。当k8s集群的某节点压力过高时,可以暂时将这个节点停止调度,使新启动的pod不再分配到这些节点上来(不会影响该节点上已存在的pod)不会被调度到该节点上(除非 Pod 有特定的节点亲和性规则)。是一
当k8s集群的某节点压力过高时,可以暂时将这个节点停止调度,使新启动的pod不再分配到这些节点上来(不会影响该节点上已存在的pod)
1.查看k8s的集群节点
root@master-node-1:~# kubectl get node
NAME STATUS ROLES AGE VERSION
master-node-1 Ready control-plane 73d v1.28.1
worker-node-1 Ready <none> 73d v1.28.1
worker-node-2 Ready <none> 73d v1.28.1
2.将某个节点停止调度
[root@master-node-1:~# kubectl cordon master-node-1
node/master-node-1 already cordoned
root@master-node-1:~# kubectl get node
NAME STATUS ROLES AGE VERSION
master-node-1 Ready,SchedulingDisabled control-plane 73d v1.28.1
worker-node-1 Ready <none> 73d v1.28.1
worker-node-2 Ready <none> 73d v1.28.1

在 Kubernetes 中,cordon 是一个用于管理节点调制的命令。它的作用是将一个节点标记为 不可调度(Unschedulable),即阻止新的 Pod 被调度到该节点上。
cordon 的作用:
-
当一个节点被标记为不可调度时:
-
已有的 Pod 仍然可以继续运行。
-
新的 Pod 不会被调度到该节点上(除非 Pod 有特定的节点亲和性规则)。
-
-
这个操作通常用于:
-
维护节点(例如升级或修复)。
-
隔离节点以进行故障排查。
-
防止新工作负载分配到资源不足或即将下线的节点。
-
3.结束调度禁用root@master-node-1:~# kubectl uncordon master-node-1
node/master-node-1 uncordoned
root@master-node-1:~# kubectl get node
NAME STATUS ROLES AGE VERSION
master-node-1 Ready control-plane 73d v1.28.1
worker-node-1 Ready <none> 73d v1.28.1
worker-node-2 Ready <none> 73d v1.28.1
4.怎么查看pod被调度到哪个k8s节点
kubectl get pod -A -o wide (-A是--all-namespaces 的简写形式。它的作用是列出所有命名空间(Namespace)中的 Pod。)
也可以用kubectl describe pod pod_name -n namespace去查看,这个命令显示的信息更加详细一些,除了显示被分配到哪个节点,还会显示该pod的配置、状态及event等。如果pod异常,event会显示异常的原因。
更多推荐



所有评论(0)