使用kubeadm进行k8s集群升级
一、目标
操作系统: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集群升级的更多相关文章
- CentOS7 使用 kubeadm 搭建 k8s 集群
一 安装Docker-CE 前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker ...
- 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令
1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- 使用Kubeadm创建k8s集群之节点部署(三十一)
前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...
- kubeadm搭建K8s集群及Pod初体验
基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...
- 使用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 ...
- (二)Kubernetes kubeadm部署k8s集群
kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...
- k8s集群升级
集群升级 由于课程中的集群版本是 v1.10.0,这个版本相对有点旧了,最新版本都已经 v1.14.x 了,为了尽量保证课程内容的更新度,所以我们需要将集群版本更新.我们的集群是使用的 kubeadm ...
- k8s学习笔记之二:使用kubeadm安装k8s集群
一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...
随机推荐
- Django/Flask的一些实现方法
一.导出当前项目用到的依赖到requirements.txt文件中 pip freeze > requirements.txt 二.安装当前项目需要的依赖: pip install -r req ...
- reboot 就是 poweroff 然后power on
halt Shut down and halt the system poweroff Shut down and power-off the system reboot [ARG] Shut dow ...
- 关于jmeter线程组和循环次数的设置
初始设置:设置线程数 n = 80,循环次数a = 1,ramp-up period=5 一 计算最后一个线程的生成时间(last) 总共生成80个线程,总共需要5秒,每秒钟会启动16个线程,所以,第 ...
- 搭建LNMP环境部署Wordpress博客
!!!首先要做的就是关闭系统的防火墙以及selinux: #systemctl stop firewalld #systemctl disable firewalld #sed -ri 's/^(SE ...
- ifconfig显示的网卡信息和我的配置文件名不符
比如我的配置文件, cd /etc/sysconfig/network-scripts/ifcfg-Auto_eth0是这个名称,但是我使用ifconfig显示的信息却是 eth6 Link en ...
- Day30 BigInteger和BigDecimal
BigInteger与BigDecimal BigInteger类 Integer类作为int的包装类,能存储的最大整型值为2 31-1,Long类也是有限的, 最大为2 63-1.如果要表示再大的整 ...
- Jaxb的优点与用法(bean转xml的插件,简化webservice接口的开发工作量)
一.jaxb是什么 JAXB是Java Architecture for XML Binding的缩写.可以将一个Java对象转变成为XML格式,反之亦然. 我们把对象与关系数据库之间的映射称 ...
- Nginx 配置实例-配置高可用
Nginx 配置实例-配置高可用 1. 实现效果 2. 两台机器 nginx 的安装 2.1 192.168.25.120 中 nginx 的安装 2.1.1 安装 pcre 依赖 2.1.2 安装其 ...
- Nginx 配置实例-配置负载均衡
Nginx 配置实例-配置负载均衡 0. 实例效果 1. 两个 tomcat 的安装(可选) 1.1 tomcat8081 的安装 1.1.1 tomcat8081 安装包的装备 1.1.2 tomc ...
- Python+Selenium - 三种等待方式
元素:存在 > 可见 > 可用 需要判断元素状态 等待方式1:强制等待 -- 辅助 设置等待几秒,就必须等待几秒 示例: from time import sleepsleep(3) 强 ...