原地升级k8s集群docker和containerd版本
2023-04-18 14:54:23 时间
前言
公司用的k8s集群是“多环境合一”的方式,集群流量入口也摒弃了常见的traefik和ingress-nginx,直接用了一个国内不常见的底层基于Envoy的API Gateway网关服务。当然还有非常多的其他集群流量入口组件可供选择,这里暂不讨论。由于这个组件更新迭代也是非常的快速,并且官方文档很快不展示旧版本文档了,那么随着版本更新,API版本自然发生了改变,新版本的API就没有任何的参考意义了,因此需要升级组件版本。升级组件版本前提是docker版本至少需要20.10.11,containerd版本至少是1.4.11。于是这里先原地升级这两个组件。
k8s的node节点维护
尽可能在维护节点之前保证你的有另外的冗余节点,能够支撑你当前维护节点上的所有pod。或者保证你维护这个节点驱逐了所有pod后,其他节点能够承载你这个节点上所有pod。非常可怜也非常可惜,我这里节点内存都跑到了95%以上,并且领导不给机器,让我夜里升级。pod目前集群上有超过5000个。此时只能硬着头皮上了。理念是升级完一台正常后再接着升下一台。
升级步骤
1、查看原先的containerd和docker版本
$ containerd -v
containerd containerd.io 1.2.13 7ad184331fa3e55e52b890ea95e65ba581ae3429
$ docker -v
Docker version 19.03.12, build 48a66213fe
2、驱逐pod
$ kubectl drain k8s-node02.ayunw.cn --ignore-daemonsets --delete-local-data --force
$ kubectl get node
NAME STATUS
k8s-master01.ayunw.cn Ready
k8s-node01.ayunw.cn Ready
k8s-node02.ayunw.cn NotReady,SchedulingDisabled
...
3、停止节点上docker和kubelet
systemctl stop kubelet
systemctl stop docker
systemctl stop docker.socket
systemctl stop containerd
4、卸载老版本docker并安装新版本docker和containerd
yum -y remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
dnf -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
yum makecache
dnf -y install containerd.io-1.4.12-3.1.el8.x86_64.rpm
dnf -y install docker-ce-20.10.11 docker-ce-cli-20.10.11
systemctl daemon-reload
systemctl start docker
systemctl enable docker
systemctl status docker
systemctl status containerd
systemctl enable containerd.service
5、检查docker和containerd版本
$ containerd -v && docker -v
containerd containerd.io 1.4.12 7b11cfaabd73bb80907dd23182b9347b4245eb5d
Docker version 20.10.11, build dea9396
6、启动kubelet并恢复节点
systemctl start kubelet
systemctl status kubelet
kubectl uncordon k8s-node02.ayunw.cn
kubectl get node -o wide
最后就能看到版本已经升级完成。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击