代码改变世界
[登录 · 注册]
  • Kubernetes 升级记录:从 1.16.3 升级至 1.17.0
  • 参考官方文档 Upgrading kubeadm clusters 在 ubuntu 18.04 上完成了升级,记录一下升级步骤。

    一、升级第一个 master 节点

    apt-get 安装 kubeadm 1.17.0

    apt-mark unhold kubeadm && 
    apt-get update && apt-get install -y kubeadm=1.17.0-00 && 
    apt-mark hold kubeadm
    

    放空当前节点($CP_NODE为当前升级的节点名称)

    kubectl drain $CP_NODE --ignore-daemonsets
    

    升级前检查

    kubeadm upgrade plan
    

    出现告警

    [preflight] Running pre-flight checks.
    	[WARNING CoreDNSUnsupportedPlugins]: there are unsupported plugins in the CoreDNS Corefile
    

    通过 github 上 的 相关 issue 知道这个问题没有影响,可以忽略。

    use the --ignore-preflight-errors=CoreDNSUnsupportedPlugins while upgrading. The proxy plugin will be replaced to use forward automatically.

    执行升级命令

    kubeadm upgrade apply v1.17.0 --ignore-preflight-errors=CoreDNSUnsupportedPlugins
    

    升级成功

    [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.17.0". Enjoy!
    

    解除当前节点的放空状态

    kubectl uncordon $CP_NODE
    

    二、升级其他 master 节点的 kubeadm

    apt-get 安装 kubeadm 1.17.0

    apt-mark unhold kubeadm && 
    apt-get update && apt-get install -y kubeadm=1.17.0-00 && 
    apt-mark hold kubeadm
    

    执行升级命令

    kubeadm upgrade node
    

    三、升级所有 master 节点的 kubelet 与 kubectl

    执行升级命令

    apt-mark unhold kubelet kubectl && 
    apt-get update && apt-get install -y kubelet=1.17.0-00 kubectl=1.17.0-00 && 
    apt-mark hold kubelet kubectl && 
    systemctl restart kubelet
    

    四、升级 worker 节点的 kubeadm 以及 kubelet 与 kubectl

    apt-get 安装 kubeadm 1.17.0

    apt-mark unhold kubeadm && 
    apt-get update && apt-get install -y kubeadm=1.17.0-00 && 
    apt-mark hold kubeadm
    

    在 master 上放空所升级的 worker 节点

    NODE=k8s-node4 && 
    kubectl drain $NODE --ignore-daemonsets
    

    在 worker 节点上执行升级命令

    kubeadm upgrade node
    

    在 worker 节点上升级 kubelet 与 kubectl

    apt-mark unhold kubelet kubectl && 
    apt-get update && apt-get install -y kubelet=1.17.0-00 kubectl=1.17.0-00 && 
    apt-mark hold kubelet kubectl && 
    systemctl restart kubelet
    

    在 master 上解除 worker 节点的放空

    kubectl uncordon $NODE
    

    到此所有节点升级完成。

    NAME          STATUS   ROLES    AGE   VERSION
    k8s-master0   Ready    master   19d   v1.17.0
    k8s-master1   Ready    master   19d   v1.17.0
    k8s-master2   Ready    master   19d   v1.17.0
    k8s-node3     Ready    <none>   22h   v1.17.0
    k8s-node4     Ready    <none>   22h   v1.17.0
    k8s-node5     Ready    <none>   28h   v1.17.0
    
  • 【推广】 阿里云小站-上云优惠聚集地(新老客户同享)更有每天限时秒杀!
    【推广】 云服务器低至0.95折 1核2G ECS云服务器8.1元/月
    【推广】 阿里云老用户升级四重礼遇享6.5折限时折扣!
  • 原文:https://www.cnblogs.com/dudu/p/12151746.html
走看看 - 开发者的网上家园