模拟题目:

设置配置环境: [candidate@node-1] $ kubectl config use-context mk8s

Task

现有的Kubernetes 集群正在运行版本1.25.1。仅将master节点上的所有 Kubernetes控制平面和节点组件升级到版本1.25.2。 确保在升级之前 drain master节点,并在升级后 uncordon master节点。 可以使用以下命令,通过ssh连接到master节点: ssh master01 可以使用以下命令,在该master节点上获取更高权限: sudo -i 另外,在主节点上升级kubelet和kubectl。 请不要升级工作节点,etcd,container 管理器,CNI插件, DNS服务或任何其他插件。


参考:

任务 --> 管理集群 --> 用 kubeadm 进行管理 --> 升级 kubeadm 集群 https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/


解答:

考试的时候务必记住切换集群, 注意集群名称 kubectl config use-context k8s

kubectl get nodes

维护和驱逐

kubectl cordon master01
kubectl drain master01 --ignore-daemonsets

连接master01 并 提升权限

ssh master01
sudo -i

更新软件列表查看可更新版本, 升级对应版本

apt-get update
apt-cache show kubeadm | grep 1.25.2
apt-get install kubeadm=1.25.2-00 kubelet=1.25.2-00 kubectl=1.25.2-00
kubeadm upgrade apply v1.25.2 --etcd-upgrade=false

更新时如果提示无法升级,可能是设置了hold,用unhold解除标记再更新

# 解除 阻止更新 标记
apt-mark unhold kubeadm kubectl kubelet

# 设置软件包保留,阻止自动更新
apt-mark hold kubeadm kubectl kubelet
kubeadm version
kubelet --version
kubectl version

重启kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

恢复master01 调度

kubectl uncordon master01

检查:
kubectl get node