• kubeadm 升级 k8s集群 1.17到1.20


    云原生学习路线导航页(持续更新中)

    本文是 Kubernetes 基础学习 系列文章,主要讲解 使用kubeadm,将kubernetes集群从1.17升级到1.20

    1.kubernetes一般不要跨大版本升级

    • 一般来说,跨越多个主要版本的升级需要逐个升级每个中间版本
    • 因此,无法直接将kubernetes从1.17直接升级到1.20或更高版本,需要按照1.17–>1.18–>1.19–>1.20的顺序一一进行升级
    • 本文暂时只适用于使用 kubeadm 安装的 kubernetes 集群

    2.kubeadm升级单节点集群的步骤

    如果你的kubernetes集群只有一个节点同时作为master和node,没有其他master和node,可以直接按照下面的步骤升级,否则请看第3部分

    2.1.kubernetes集群从1.17–>1.18

    # 查看kubeadm支持的所有版本
    yum list --showduplicates kubeadm --disableexcludes=kubernetes
    
    # 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
    # 如这里选择1.18.20-0
    yum install -y kubeadm-1.18.20-0 --disableexcludes=kubernetes
    
    # 验证kubeadm是否升级成功
    kubeadm version
    
    # 将kubelet和kubectl也升级一下
    yum downgrade kubelet-1.18.20 kubectl-1.18.20
    
    # 查看升级计划,如果没有明显的报错,就可以继续
    kubeadm upgrade plan
    
    # 执行升级
    kubeadm upgrade apply v1.18.20
    
    # 注:如果上面升级报错:
    	# 报错 - There are kubelets in this cluster that are too old that have these versions,
    	# 则可以添加--force强制升级
    	# kubeadm upgrade apply v1.18.20 --force
    
    # 出现这段,代表升级成功
    # [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.20". Enjoy!
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2.2.kubernetes集群从1.18–>1.19

    # 查看kubeadm支持的所有版本
    yum list --showduplicates kubeadm --disableexcludes=kubernetes
    
    # 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
    # 如这里选择1.19.16-0
    yum install -y kubeadm-1.19.16-0 --disableexcludes=kubernetes
    
    # 验证kubeadm是否升级成功
    kubeadm version
    
    # 将kubelet和kubectl也升级一下
    yum downgrade kubelet-1.19.16 kubectl-1.19.16
    
    # 查看升级计划,如果没有明显的报错,就可以继续
    kubeadm upgrade plan
    
    # 执行升级
    kubeadm upgrade apply v1.19.16
    
    # 注:如果上面升级报错:
    	# 报错 - There are kubelets in this cluster that are too old that have these versions,
    	# 则可以添加--force强制升级
    	# kubeadm upgrade apply v1.19.16 --force
    
    # 出现这段,代表升级成功
    # [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.19.16". Enjoy!
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2.3.kubernetes集群从1.19–>1.20

    # 查看kubeadm支持的所有版本
    yum list --showduplicates kubeadm --disableexcludes=kubernetes
    
    # 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
    # 如这里选择1.20.15-0
    yum install -y kubeadm-1.20.15-0 --disableexcludes=kubernetes
    
    # 验证kubeadm是否升级成功
    kubeadm version
    
    # 将kubelet和kubectl也升级一下
    yum downgrade kubelet-1.20.15 kubectl-1.20.15
    
    # 查看升级计划,如果没有明显的报错,就可以继续
    kubeadm upgrade plan
    
    # 执行升级
    kubeadm upgrade apply v1.20.15
    
    # 注:如果上面升级报错:
    	# 报错 - There are kubelets in this cluster that are too old that have these versions,
    	# 则可以添加--force强制升级
    	# kubeadm upgrade apply v1.20.15 --force
    
    # 出现这段,代表升级成功
    # [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.20.15". Enjoy!
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3.kubeadm升级多节点集群的步骤

    下面演示 1.17–>1.18 的过程,升级后,用户可自行再升级到1.19和1.20,只需修改版本号即可

    3.1.kubeadm升级一个master

    • 如果你有多个master,先选择一个master,按照第2部分的步骤,将1.17升级到1.18
      # 查看kubeadm支持的所有版本
      yum list --showduplicates kubeadm --disableexcludes=kubernetes
      
      # 这里每次升级到中转版本,都升级到当前版本的最新版,当然你也可以自行选择其他版本
      # 如这里选择1.18.20-0
      yum install -y kubeadm-1.18.20-0 --disableexcludes=kubernetes
      
      # 验证kubeadm是否升级成功
      kubeadm version
      
      # 将kubelet和kubectl也升级一下
      yum downgrade kubelet-1.18.20 kubectl-1.18.20
      
      # 查看升级计划,如果没有明显的报错,就可以继续
      kubeadm upgrade plan
      
      # 执行升级
      kubeadm upgrade apply v1.18.20
      
      # 注:如果上面升级报错:
      	# 报错 - There are kubelets in this cluster that are too old that have these versions,
      	# 则可以添加--force强制升级
      	# kubeadm upgrade apply v1.18.20 --force
      
      # 出现这段,代表升级成功
      # [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.20". Enjoy!
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26

    3.2.kubeadm升级其他master和node

    # 升级kubeadm
    yum install -y kubeadm-1.18.20-0 --disableexcludes=kubernetes
    
    # 查看kubeadm升级是否成功
    kubeadm version
    
    # 查看升级计划
    kubeadm upgrade plan
    
    # 注意,这里不是apply,而是node
    kubeadm upgrade node
    
    # 驱逐工作负载
    # 将  替换为你要腾空的控制面节点名称
    kubectl drain <node-to-drain> --ignore-daemonsets
    
    # 升级kubelet和kubectl
    yum install -y kubelet-1.18.20-0 kubectl-1.18.20-0 --disableexcludes=kubernetes
    
    # 重启kubelet
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
    # 解除节点保护
    # 将  替换为你的节点名称
    kubectl uncordon <node-to-uncordon>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    4.参考链接

  • 相关阅读:
    el-select组件绑定change怎么获取label和value值
    ASO优化之为应用创建屏幕截图的技巧(下)
    kotlin用ping命令判断网络是否是通的
    树莓派之快速上手-变身个人Linux电脑
    SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog
    飞书面试经验
    加解密随笔
    电子元器件行业B2B交易管理系统:提升数据化驱动能力,促进企业销售业绩增长
    SpringMVC 环境配置
    什么是shuffle?shuffle的原理及过程
  • 原文地址:https://blog.csdn.net/a1369760658/article/details/138029302