一、目标

操作系统:CentOS Linux release 7.6.1810 (Core)

安装软件:

docker:18.06.3-ce


从v1.15.5升级到v1.16.15

当前版本:

[root@master yum.repos.d]# kubectl get node -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready master 18h v1.15.5 10.0.0.17 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.6.3
node01 Ready,SchedulingDisabled <none> 17h v1.15.5 10.0.0.27 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.6.3
node02 Ready <none> 17h v1.15.5 10.0.0.37 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.6.3

二、升级kubeadm

1、配置k8s镜像源(所有主机)

[root@master yum.repos.d]# cat kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2、查看可下载的kubeadm版本(任一主机)

yum list kubeadm --showduplicates | sort -r

3、下载需要升级的版本(所有主机)

[root@master yum.repos.d]# yum install -y kubeadm-1.16.5-0 --disableexcludes=kubernetes

4、验证kubeadm版本(任一主机)

[root@master yum.repos.d]# kubeadm version
  kubeadm version: &version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.15", GitCommit:"2adc8d7091e89b6e3ca8d048140618ec89b39369", GitTreeState:"clean", BuildDate:"2020-09-02T11:37:34Z", GoVersion:"go1.13.15", Compile    r:"gc", Platform:"linux/amd64"}

5、验证升级计划(master主机)

[root@master yum.repos.d]# kubeadm upgrade plan

6、运行apply命令进行升级(master主机)

[root@master yum.repos.d]# kubeadm upgrade apply v1.16.15

7、其他node节点执行

[root@node01 ~]# kubeadm upgrade node
[upgrade] Reading configuration from the cluster...
[upgrade] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade] Skipping phase. Not a control plane node[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.16" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

三、升级Kubectl和Kubelet

1、腾空节点

# 将 <node-to-drain> 替换为你要腾空的控制面节点名称
kubectl drain <node-to-drain> --ignore-daemonsets

这里先升级master几点,因此执行了

[root@master yum.repos.d]# kubectl drain master --ignore-daemonsets
node/master cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-vkkkb, kube-system/kube-proxy-xddvj
evicting pod "coredns-58cc8c89f4-762x5"
pod/coredns-58cc8c89f4-762x5 evicted
node/master evicted

2、安装相同版本的kubelet和kubectl

[root@master yum.repos.d]# yum install -y kubelet-1.16.15-0 kubectl-1.16.15-0 --disableexcludes=kubernetes

3、重启kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

4、将节点标记为可调度,让其重新上线

# 将 <node-to-drain> 替换为你的节点名称
kubectl uncordon <node-to-drain>

这里将master节点上线

[root@master yum.repos.d]# kubectl uncordon master
node/master uncordoned

5、验证

[root@master yum.repos.d]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready master 18h v1.16.15
node01 Ready,SchedulingDisabled <none> 18h v1.15.5
node02 Ready <none> 18h v1.15.5

6、同样的步骤升级node节点,验证

[root@master /]# kubectl get node -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready master 18h v1.16.15 10.0.0.17 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.6.3
node01 Ready <none> 18h v1.16.15 10.0.0.27 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.6.3
node02 Ready,SchedulingDisabled <none> 18h v1.16.15 10.0.0.37 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.6.3

至此,完成升级!

使用kubeadm进行k8s集群升级的更多相关文章

  1. CentOS7 使用 kubeadm 搭建 k8s 集群

    一 安装Docker-CE 前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker ...

  2. 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令

    1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...

  3. 使用Kubeadm创建k8s集群之部署规划(三十)

    前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...

  4. 使用Kubeadm创建k8s集群之节点部署(三十一)

    前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...

  5. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  6. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  7. (二)Kubernetes kubeadm部署k8s集群

    kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...

  8. k8s集群升级

    集群升级 由于课程中的集群版本是 v1.10.0,这个版本相对有点旧了,最新版本都已经 v1.14.x 了,为了尽量保证课程内容的更新度,所以我们需要将集群版本更新.我们的集群是使用的 kubeadm ...

  9. k8s学习笔记之二:使用kubeadm安装k8s集群

    一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...

随机推荐

  1. Zabbix 监控介绍

    Zabbix 监控介绍 1.Zabbix监控架构 2.Zabbix 优点 开源无软件成本投入 Server对设备性能要求低 支持设备多,自带多种监控模板 支持分布式集中管理,有自动发现功能,可以实现自 ...

  2. 059.Python前端Django组件cooki和session

    一 会话跟踪技术 1.1 什么是会话 会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程. 1.2 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视.(将用户与同一用户发 ...

  3. 痞子衡嵌入式:快速定位i.MXRT600板级设计ISP[2:0]启动模式引脚上电时序问题的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种快速定位i.MXRT600板级设计ISP[2-0]启动模式引脚上电时序问题的方法. 我们知道恩智浦i.MXRT600是主打音频市场的 ...

  4. C语言编程 菜鸟练习100题(41-50)

    [练习41]字符串翻转 0. 题目: 字符串翻转 1. 分析: 学习递归思想和方法. 2. 程序: 方法一: #include <stdio.h> void reverseSentence ...

  5. Nginx实战部署常用功能演示(超详细版),绝对给力~~~

    前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域.缓存.配置SSL证书.高可用等,老规矩,还是挑几个平时比较常用的进行演示分享.上篇详见Nginx超详 ...

  6. Jmeter(四十九) - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)

    1.简介 上一篇宏哥讲解了利用jmeter的插件来监控服务器资源,这一篇讲解分享如何使用jmeter的监视器结果监控tomcat性能. 2.准备工作 文章标题中提到jmeter和tomcat,那么只需 ...

  7. 日常Bug排查-抛异常不回滚

    日常Bug排查-抛异常不回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 最近有人反映java应用操作数据库的时候,抛异 ...

  8. Jenkins实战应用–Jenkins构建中tag的应用

    Jenkins实战应用–Jenkins构建中tag的应用 文章目录[隐藏] *系列汇总* 1,缘起. 2,回滚功能. 1,添加mode选项. 2,再添加branch选项. 3,添加Git Parame ...

  9. 关于LSTM核心思想的部分理解

    具体资料可以查阅网上,这里提到一些难理解的点.别人讲过的知识点我就不重复了. LSTM 的关键就是细胞状态,按照水平线从左向右运行,如同履带,在整个链上运行. 根据时间t-1,t,t+1,我们可以看出 ...

  10. C++ OP相关注意事项

    C++ OP相关注意事项 Paddle中Op的构建逻辑 1.Paddle中Op的构建逻辑 Paddle中所有的Op都继承自OperatorBase,且所有的Op都是无状态的,每个Op包含的成员变量只有 ...