January 2026
Intermediate to advanced
392 pages
4h 44m
Chinese
使用以下命令列出集群节点。您应看到:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready control-plane 2m20s v1.32.2 minikube-m02 Ready <none> 2m10s v1.32.2 minikube-m03 Ready <none> 2m3s v1.32.2 minikube-m04 Ready <none> 116s v1.32.2
使用以下命令调度 Pod:
$ kubectl run nginx --image=nginx:1.27.4-alpine
可通过显示信息识别Pod运行节点。该Pod正在名为minikube-m02的节点上运行:
$ kubectl get pod nginx -o jsonpath='{.spec.nodeName}'
minikube-m02
使用kubectl drain命令驱逐节点上的所有Pod。此处节点名为minikube-m02。需添加--ignore-daemonsets参数仅删除非DaemonSet管理的Pod,并使用--force参数强制删除无控制器管理的Pod:
$ kubectl drain minikube-m02 --ignore-daemonsets --force evicting pod default/nginx pod/nginx evicted node/minikube-m02 drained
本示例练习的解决方案需要大量手动操作。以下命令不会显示其输出结果。
通过 Vagrant 打开控制平面节点的交互式 shell:
$ vagrant ssh kube-control-plane
将kubeadm升级至 1.32.2 版本并应用更新:
$ sudo apt-mark unhold kubeadm && sudo apt-get update && sudo apt-get \ install -y kubeadm=1.32.2-1.1 && sudo apt-mark hold kubeadm $ sudo kubeadm upgrade apply v1.32.2
清空节点资源、升级kubelet和kubectl、重启kubelet并解除节点隔离:
$ kubectl drain kube-control-plane --ignore-daemonsets $ sudo apt-get update && sudo apt-get install -y \ --allow-change-held-packages kubelet=1.32.2-1.1 kubectl=1.32.2-1.1 $ sudo systemctl daemon-reload $ sudo systemctl restart kubelet $ kubectl uncordon kube-control-plane
节点版本应显示为v1.32.2。退出节点:
$ kubectl get nodes $ exit
使用Vagrant在工作节点上打开交互式shell:
$ vagrant ssh kube-worker-1
将kubeadm升级至1.32.2版本并应用至节点:
$ sudo apt-get update && sudo apt-get install -y \ --allow-change-held-packages ...
Read now
Unlock full access