k8s集群升级

news2025/2/25 23:17:02

目录

1. 部署cri-docker (所有集群节点)

2. 升级master节点

3. 升级worker节点

4. 部署containerd 


1. 部署cri-docker (所有集群节点)

k8s从1.24版本开始移除了dockershim,所以需要安装cri-docker插件才能使用docker

软件下载:GitHub - Mirantis/cri-dockerd: dockerd as a compliant Container Runtime Interface for Kubernetes

安装

rpm -ivh  cri-dockerd-0.3.5.20231016182601.cd730ff8-0.el7.x86_64.rpm

配置cri-docker

vim /usr/lib/systemd/system/cri-docker.service

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=reg.westos.org/k8s/pause:3.7

systemctl daemon-reload
systemctl  enable --now cri-docker
ll /var/run/cri-dockerd.sock

2. 升级master节点

首先上传镜像到harbor仓库,便于升级

docker load -i k8s-v1.24.17.tar
docker images | grep k8s
docker push reg.westos.org/k8s/kube-apiserver:v1.24.17
docker push  reg.westos.org/k8s/kube-proxy:v1.24.17
docker push reg.westos.org/k8s/kube-scheduler:v1.24.17
docker push reg.westos.org/k8s/kube-controller-manager:v1.24.17
docker push reg.westos.org/k8s/pause:3.7

升级kubeadm 执行升级

yum install -y kubeadm-1.24.17-0
kubeadm upgrade plan

修改节点套接字

kubectl edit nodes k8s1

kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/cri-dockerd.sock

kubeadm upgrade apply v1.24.17

腾空节点

kubectl drain k8s1 --ignore-daemonsets

升级kubelet

yum install -y kubelet-1.24.17-0 kubectl-1.24.17-0

配置kubelet使用cri-docker

vim /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--pod-infra-container-image=reg.westos.org/k8s/pause:3.7 --container-runtime=remote --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock"

重启kubelet

systemctl daemon-reload 
systemctl  restart kubelet 

解除节点保护

kubectl uncordon k8s1

完成升级

3. 升级worker节点

升级kubeadm  执行升级

yum install -y kubeadm-1.24.17-0
kubeadm upgrade node

腾空节点   #需要在master节点执行

kubectl drain k8s2 --ignore-daemonsets
kubectl drain k8s3 --ignore-daemonsets

升级kubelet

yum install -y kubelet-1.24.17-0 kubectl-1.24.17-0

配置kubelet使用cri-docker

vim /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--pod-infra-container-image=reg.westos.org/k8s/pause:3.7 --container-runtime=remote --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock"

修改节点套接字  #需要在master节点执行

kubectl edit nodes k8s2
...
kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/cri-dockerd.sock

重启kubelet

systemctl daemon-reload 
systemctl  restart kubelet 

解除节点保护  #需要在master节点执行

kubectl uncordon k8s2

其它节点依此类推

完成升级

4. 部署containerd 

k8s从1.24版本开始移除了dockershim,所以我们不在使用docker,选用containerd。

k8s1、k8s2、k8s3在配置前需要重置节点

kubeadm reset
kubeadm reset  --cri-socket unix:///var/run/cri-dockerd.sock
kubeadm reset  --cri-socket unix:///var/run/cri-dockerd.sock

k8s1:

k8s2,3

所有节点清除iptables规则

iptables -F
iptables -F -t nat

禁用所有节点docker和cri-docker服务

systemctl  disable --now docker
systemctl  disable --now docker.socket
systemctl  disable --now cri-docker

之前部署过docker,containerd默认已经安装

修改配置

containerd config default | tee /etc/containerd/config.toml
cd /etc/containerd/
vim config.toml
...
sandbox_image = "reg.westos.org/k8s/pause:3.7"
...
SystemdCgroup = true

修改配置文件

vim /etc/containerd/config.toml
...
[plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"
mkdir -p /etc/containerd/certs.d/docker.io

vim /etc/containerd/certs.d/docker.io/hosts.toml

server = "https://registry-1.docker.io"

[host."https://reg.westos.org"]
  capabilities = ["pull", "resolve", "push"]
  skip_verify = true

拷贝证书

mkdir -p /etc/containerd/certs.d/reg.westos.org
cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/containerd/certs.d/reg.westos.org/
systemctl  restart containerd
scp -r certs.d/ config.toml k8s2:/etc/containerd/
scp -r certs.d/ config.toml k8s3:/etc/containerd/


k8s2,3
systemctl disable --now docker cri-docker docker.socket
systemctl  enable --now containerd
crictl config runtime-endpoint unix:///run/containerd/containerd.sock

启动containerd

systemctl  enable --now containerd
systemctl  restart containerd
crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl img
crictl pull reg.westos.org/k8s/pause:3.6

集群初始化

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s --kubernetes-version v1.24.17
kubectl apply -f kube-flannel.yml

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1148502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JWT详解解读读

📑前言 本文主要是jwt解读文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点&#…

计算机毕业设计选题推荐-跑腿平台微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【Java】HashSet集合用法

目录 HashSet 集合特点 示例代码 手写HashSet集合 HashSet 没有Get() HashSet 集合特点 HashSet 基于HashMap 来实现的,是一个不允许有重复元素的集合HashSet 允许有 null 值HashSet 是无序的,即不会记录插入的顺序HashSet集合实现了Set接口HashSet …

07 MIT线性代数-求解Ax=0:主变量,特解 pivot variables, special solutions

前面定义了矩阵的列空间和零空间,那么如何求得这些子空间呢? 1. 计算零空间 Nullspace A的零空间即满足Ax0的所有x构成的向量空间 对于矩阵A进行“行操作”并不会改变Axb的解,因此也不会改变零空间 unchanged 第一步消元: echelon 阶梯型 …

《进化的力量》摘抄

作者:刘润 不是最强壮的,也不是最聪明的,而是最适合的才能生存。 序言 1、成功,一定是因为我们做对了什么。物竞天择,适者生存。但是,面对“天择”逻辑的复杂性,我们其实并不知道什么是对的。…

名人问题(分类讨论),士兵问题(找规律)

【名人问题】n个人中的名人是指这样一个人:他不认识别人,但是每个人都认识他。任务就是找出这样一个名人,但只能通过询问“你认识他/她吗?”这种问是来完成。设计一个高效算法,找出该名人或者确定这群人中没有名人。你的算法在最坏情况下需要…

nginx 进程模型

文章目录 nginx运行模式与进程模式进程模式流程图默认初始化运行模式与进程模式(宏展开)cpu_affinity多CPU绑定合理性判定Nginx的daemon创建(os/unix/ngx_daemon.c)运行模式、进程模式启动 多进程模式下master处理流程设置进程信号、初始化信号掩码、屏蔽…

『第十一章』数据持久化:CoreData 与 CloudKit

在本篇博文中,您将学到如下内容: 1. 苹果“元老”数据库 CoreData 简介2. CoreData 组成要素3. NSPersistentContainer 对象4. 将 CoreData 集成到项目中5. CoreData 基本操作:增删改查(CRUD)5.1 新建5.2 删除5.3 查询和更新6. CoreData 与 SwiftUI7. 用泛型精简瓶颈代码8. …

多元系的热力学基本方程

多元系:含有两种或两种以上的化学组分的系统 欧勒定理 齐函数成立的充要条件: 多元系的热力学函数 如果系统有K个组元:任何广延量(V, U, S)都是其广延变量的一次齐函数 任何强度量都是其广延变量的零次齐函数 全部选择广延量变量时 由齐函…

UWB室内定位技术

室内定位系统方案中,UWB室内定位技术目前应用较多,得益于UWB室内定位10-30厘米的超高定位精度。 UWB全称是超宽带技术,它是一种无线载波通信技术。 UWB不采用载波,而是利用纳秒至微微秒级的非正弦波窄脉冲传输数据。 目前根据使用…

腾讯云轻量应用服务器地域北京、上海和广州怎么选择比较好?

腾讯云轻量应用服务器地域是指轻量服务器数据中心所在的地理位置,如上海、广州和北京等地域,如何选择地域?腾讯云百科txybk.com建议地域选择遵循就近原则,用户距离轻量服务器地域越近,网络延迟越低,速度就越…

DAMNets

方法 体会 实验充分,不愧是ICLR,但作者未提供代码

代码审计-锐捷EG易网关 管理员账号密码泄露漏洞

出现漏洞的文件在 /login.php 审查源码我们发现通过命令拼接的方式构造命令执行 发送请求包,拼接 CLI指令 show webmaster user /login.php usernameadmin&passwordadmin?showwebmasteruser漏洞证明: 文笔生疏,措辞浅薄,望…

GO学习之 通道(nil Channel妙用)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

网络设备远程登录和管理-双厂商

✍ 设备开局都要做哪些配置? ✍ 思科华为的配置命令有什么区别? ✍ 实战演示不同操作系统的配置; -- 本地设备调试 - console接口配置 -- 远程设备管理 - telnet 不加密 | ssh 加密的 -- web界面调试 - 补充的作用 -- SD…

idea中Run/Debug Python项目报错 Argument for @NotNull parameter ‘module‘ of ...

idea中Run/Debug Python项目报错 Argument for NotNull parameter module of ... idea中运行Python项目main.py时报错: Error running main: Argument for NotNull parameter module of com/intellij/openapi/roots/ModuleRootManager.getInstance must not be nu…

电脑提示由于找不到vcruntime140.dll文件,教你四个解决方案

本文将介绍vcruntime140.dll文件的定义、作用以及丢失的原因,并提供四个解决方案来解决这个问题。 首先,让我们来了解一下vcruntime140.dll文件是什么。vcruntime140.dll是Microsoft Visual C Redistributable Package的一部分,它是运行使用…

从0到1之微信小程序快速入门(基础知识)

目录 JSON 配置文件 WXML 模板 WXSS 样式 JS 逻辑交互 微信小程序中,每个页面由4 个基本文件组成,它们分别是:js文件(页面的脚本文件,存放页面的数据、事件处理函数等)、json文件(当前页面的配置文件,配置窗口的外…

【C++的OpenCV】第十四课-OpenCV基础强化(二):访问单通道Mat中的值之at()、ptr()、iscontinuous()

🎉🎉🎉 欢 迎 各 位 来 到 小 白 p i a o 的 学 习 空 间 ! \color{red}{欢迎各位来到小白piao的学习空间!} 欢迎各位来到小白piao的学习空间!🎉🎉🎉 💖&…

Python——新建工程/引入本地库

文章目录 前言一、创建项目及文件二、之前创建项目未勾选Inherit global site-packages三、缺少第三方库报错pywpswin32commarkupsafe前言 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其…