CKA考试

1. K8S集群Control Plane版本升级,不包括etcd、coreDNS

参考文档

  1. https://v1-20.docs.kubernetes.io/zh/docs/tasks/administer-cluster/safely-drain-node/
  2. https://v1-20.docs.kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
  3. https://v1-20.docs.kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#drain

路就是先升级kubeadm,然后使用kubeadm升级容器相关组件,最后升级kubelet、kubectl

注意: 在操作Control Plane之前必须drain该节点,升级完成后还需要uncordon该节点,使其可以正常工作。在drain时会提示daemonset类型的pod无法驱逐,使用提示里面的--ignore-daemonsets参数即可

主要命令如下

root@~ ]$ kubectl get node # 查看节点状态是否都已经ready
root@~ ]$ kubectl drain hostname --ignore-daemonsets # 将该节点设置为不可调度,并驱逐该节点的所有动态pod,--ignore-daemonsets会把所有daemonsets管理的pod也一起驱逐
root@~ ]$ apt update # 更新可用的软件包列表
root@~ ]$ apt-cache policy kubeadm  # 显kubeadm的安装状态和版本信息
root@~ ]$ apt-get update && apt-get install -y --allow-change-held-packages kubeadm=1.20.7-00 # 更新kubeadm版本到1.20.7
root@~ ]$ kubeadm version # 验证kubeadm版本
root@~ ]$ kubeadm upgrade plan # 查看升级计划
root@~ ]$ kubeadm upgrade apply v1.20.7 # 根据升级计划中提示的升级命令将Contron Plane节点相关静态pod组件升级为1.20.7
root@~ ]$ apt-get update && apt-get install -y --allow-change-held-packages kubelet=1.20.7-00 kubectl=1.20.7-00
root@~ ]$ systemctl daemon-reload
root@~ ]$ systemctl restart kubelet # 重启kubelet
root@~ ]$ kubectl uncordon hostname # 升级完成后恢复该节点为可调度

CoreDNS:如果升级过程中这两个组件也被升级了,那么只需要使用kubectl edit -n kube-system deploy coredns修改deploy中的image版本号为原来的即可,重启kubelet后生效

cordon只会将节点标记为不可调度,而drain不仅会标记为不可调度,默认还会驱逐所有动态pod,但是不能驱逐daemonsets管理的pod。


上一篇:k8s-搭建部署


下一篇:Kubernetes 证书默认1年过期时间修改