当前位置:   article > 正文

11.5.k8s中pod的调度-cordon,drain,delete

11.5.k8s中pod的调度-cordon,drain,delete

目录

一、概念

二、使用

1.cordon 停止调度

1.1.停止调度

1.2.解除恢复

2.drain 驱逐节点

2.1.驱逐节点

2.2.参数介绍

2.3.解除恢复

3.delete 删除节点


一、概念

cordon节点,drain驱逐节点,delete 节点,在对k8s集群节点执行维护(例如内核升级、硬件维护等)时候会用到。后期创建的pod都不会被调度到该节点上,但操作的暴力程度不一样。改变的是节点的STATUS

二、使用

1.cordon 停止调度

1.1.停止调度

影响最小,node的STATUS调为SchedulingDisabled,新创建pod,不会被调度到该节点,节点原有pod不受影响,仍正常对外提供服务。

  1. # 停止调度节点
  2. [root@k8s1 k8s-yaml]# kubectl cordon k8s2
  3. node/k8s2 cordoned
  4. [root@k8s1 k8s-yaml]# kubectl get node -owide
  5. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  6. k8s1 Ready control-plane,master 12d v1.23.17 192.168.11.11 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://19.3.13
  7. k8s2 Ready,SchedulingDisabled <none> 12d v1.23.17 192.168.11.12 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://19.3.13

1.2.解除恢复

  1. # 可使用 uncordon 恢复
  2. [root@k8s1 k8s-yaml]# kubectl uncordon k8s2
  3. node/k8s2 uncordoned

2.drain 驱逐节点

首先驱逐node上的pod,在其他节点重新创建,然后将节点调为SchedulingDisabled。

2.1.驱逐节点

kubectl drain k8s2 --ignore-daemonsets

2.2.参数介绍

--ignore-daemonsets #daemonset资源不能被驱逐,需要排除,加这个选项参数排除;
--delete-emptydir-data #如果无法驱逐成功,再加这个参数;

  1. kubectl drain k8s2 --ignore-daemonsets --delete-emptydir-data
  2. kubectl get pods -o wide -A | grep k8s2

驱逐pod后,我们会发现,k8s2还存在两个pod; 一个是flannel组件还有一个是kube-proxy代理pod;我们不用管这两个没有被驱逐的pod;

2.3.解除恢复

也是使用kubectl uncordon k8s2恢复

  1. # 恢复
  2. [root@k8s1 k8s-yaml]# kubectl uncordon k8s2
  3. node/k8s2 uncordoned

3.delete 删除节点

最暴力的一个,首先驱逐node上的pod,在其他节点重新创建,然后,从master节点删除该node,master失去对其控制,如要恢复调度,需进入node节点,重启kubelet服务

kubectl delete node k8s2

关于节点扩缩容的具体操作流程可关注后面的文章
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/754118
推荐阅读
相关标签
  

闽ICP备14008679号