考题概述:
设置 ek8s-node-1 节点为不可⽤、重新调度该节点上的所有 pod
考题解析:
cordon节点,drain 节点,需要忽略 daemonsets 并清除 local-data,否则可能⽆法驱逐 pod
参考⽅法:
kubectl cordon k8s-node1
kubectl drain k8s-node1 --ignore-daemonsets --delete-emptydir-data --force
kubectl get nodes
参考资料
作用介绍:
taint: 污点(查看污点、设置污点、取消污点)
cordon: 封锁;标记节点不可调度
uncordon: 标记节点可以调度;
drain: 驱逐节点上的pod
如果一个node被标记为cordon,新创建的pod不会被调度到此node上,已经调度上去的不会被移走,coedon用于节点的维护,当不希望再节点分配pod,那么可以使用coedon把节点标记为不可调度
如果一个节点被设置为drain,则此节点不再被调度pod,且此节点上已经运行的pod会被驱逐(evicted)到其他节点
drain包含两种状态:cordon不可被调度,evicted驱逐当前节点所以pod
实验环境说明:
192.168.2.21 master
192.168.2.22 node
192.168.2.23 node
1.标记节点不可调度
kubectl cordon 192.168.2.22
kubectl get node
2.解除节点的封锁uncordon
kubectl uncordon 192.168.2.22
kubectl get node
3.给节点打上污点
kubectl taint node 192.168.2.23 node-role.kubernetes.io/master:NoSchedule
kubectl describe node 192.168.2.23 | grep Taint
4.去掉节点的污点
kubectl taint node 192.168.210.51 node-role.kubernetes.io/master:NoSchedule-
kubectl describe node 192.168.2.23 | grep Taint
5.驱逐节点上的pod
kubectl drain 192.168.2.23 --ignore-daemonsets --delete-local-data --force
kubectl get pod -A -o wide | grep 192.168.2.23