1.题目

Upgrade the master node version from 1.19.0 to 1.20.0, make sure that the pod on master node should reschedule to the other node, after upgrade, then make the master node available.

2.解析

本题目考测集群升级,drain命令。首先我们先把master node上的pod调度到其他可用的node,再进行升级。升级完成后,再把master node标记回可调度状态。

3.答案

  1. 先把master节点上的pod重新调度到其他节点上

    1. kubectl drain master --ignore-daemonsets
  2. 接着升级master node

    1. # 进行升级
    2. apt-mark unhold kubelet kubectl && \
    3. apt-get update && apt-get install -y kubelet=1.20.0-00 kubectl=1.20.0-00 && \
    4. apt-mark hold kubelet kubectl
    5. # 重新启动kubelet
    6. systemctl daemon-reload
    7. systemctl restart kubelet
  3. 把升级完的master node设为可调度

    1. kubectl uncordon master

    https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/