Node管理
禁止pod调度到该节点上
kubectl cordon
在其他node上重新启动它们,通常该节点需要维护时使用该命令。直接使用该命令会自动调用kubectl cordon
[root@master1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
172.16.123.61 Ready node 3d21h v1.20.2
172.16.123.62 Ready node 3d21h v1.20.2
172.16.123.63 Ready,SchedulingDisabled master 3d21h v1.20.2
[root@master1 ~]# kubectl cordon 172.16.123.61
node/172.16.123.61 cordoned
[root@master1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
172.16.123.61 Ready,SchedulingDisabled node 3d21h v1.20.2
172.16.123.62 Ready node 3d21h v1.20.2
172.16.123.63 Ready,SchedulingDisabled master 3d21h v1.20.2
驱逐该节点上的所有pod
kubectl drain
[root@master1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-78d698d9f7-dnk6h 1/1 Running 0 7m40s 172.20.104.13 172.16.123.62 <none> <none>
nginx-78d698d9f7-k9d4h 1/1 Running 0 7m34s 172.20.166.143 172.16.123.61 <none> <none>
[root@master1 ~]# kubectl drain 172.16.123.61 --force --ignore-daemonsets --delete-local-data
Flag --delete-local-data has been deprecated, This option is deprecated and will be deleted. Use --delete-emptydir-data.
node/172.16.123.61 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-2sj8b, kube-system/node-local-dns-2k5jn
evicting pod default/nginx-78d698d9f7-k9d4h
evicting pod kube-system/coredns-5787695b7f-l6vlb
evicting pod kube-system/metrics-server-8568cf894b-pw7mq
[root@master1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
172.16.123.61 Ready,SchedulingDisabled node 3d21h v1.20.2
172.16.123.62 Ready node 3d21h v1.20.2
172.16.123.63 Ready,SchedulingDisabled master 3d21h v1.20.2
pod/metrics-server-8568cf894b-pw7mq evicted
pod/nginx-78d698d9f7-k9d4h evicted
pod/coredns-5787695b7f-l6vlb evicted
node/172.16.123.61 evicted
[root@master1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-78d698d9f7-9z6lf 1/1 Running 0 2m47s 172.20.104.16 172.16.123.62 <none> <none>
nginx-78d698d9f7-dnk6h 1/1 Running 0 14m 172.20.104.13 172.16.123.62 <none> <none>
当该节点维护完成,启动了kubelet后,再使用kubectl uncordon
[root@master1 ~]# kubectl uncordon 172.16.123.61
node/172.16.123.61 uncordoned
[root@master1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
172.16.123.61 Ready node 3d21h v1.20.2
172.16.123.62 Ready node 3d21h v1.20.2
172.16.123.63 Ready,SchedulingDisabled master 3d21h v1.20.2