模拟题目:
设置配置环境: [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