安全地清空一个Kubernetes节点¶
当我们需要下线一个Kubernetes节点前,我们需要先完成节点 驱逐(evicted) Pods 。Kubernetes提供了一个简单的不需要指定pods的驱逐方法,就是 drain
节点。
举例,我们清空节点
jetson
kubectl drain jetson --delete-local-data --force --ignore-daemonsets
此时会提示:
node/jetson cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-arm64-f6z9b, kube-system/kube-flannel-ds-rxw88, kube-system/kube-proxy-8lclg
evicting pod kube-verify/kube-verify-69dd569645-q24vf
pod/kube-verify-69dd569645-q24vf evicted
node/jetson evicted
恢复drain节点¶
如果Kubernetes节点已经修复完成,确定节点可以恢复调度,则执行 kubectl uncordon
来恢复节点(这个指令实际上是常用的 kubectl cordon
的逆反):
kubectl uncordon jetson
此时会看到输出:
node/jetson uncordoned
再次检查节点 kubectl get nodes -o wide
会看到jetson节点恢复调度:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
jetson Ready <none> 59m v1.19.4 192.168.6.10 <none> Ubuntu 18.04.5 LTS 4.9.140-tegra docker://19.3.6