设置k8s节点为不可调度

 

K8S 手动标记节点为不可调度,排空节点

节点也可以手动被标记为不可调度并排空。不涉及细节,这些工作可用以下 kubectl 命令完成:

kubectl cordon <node>             标记节点为不可调度(但对其上的pod不做任何事 )

kubectl drain  <node>               标记节点为不可调度,随后疏散其上所有pod

 

kubectl drain nodename --delete-local-data --ignore-daemonsets --force

  • --force 当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候就需要用--force来强制执行 (例如:kube-proxy)
  • --ignore-daemonsets 无视DaemonSet管理下的Pod。即--ignore-daemonsets往往需要指定的,这是因为deamonset会忽略unschedulable标签(使用kubectl drain时会自动给节点打上不可调度标签),因此deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,这样就会成为死循环.因此这里忽略daemonset。
  • --delete-local-data 如果有mount local volumn的pod,会强制杀掉该pod。

两种情形下, 在你用 kubectl uncordon <node > 解除节点的不可调度之前,不会有新pod 被 调度到该节点上。

posted @ 2023-03-02 13:30  CF211  阅读(374)  评论(0编辑  收藏  举报