当前位置: 首页 > news >正文

2.6.升级 containerd

更新前/usr/local/bin/下的 containerd 相关文件:

# ll /usr/local/bin/ total 279M lrwxrwxrwx 1 root root 33 Jul 14 2025 nerdctl -> /usr/local/containerd/bin/nerdctl -rwxr-xr-x 1 demo demo 23M Mar 28 2025 etcd -rwxr-xr-x 1 demo demo 18M Mar 28 2025 etcdctl -rwxr-xr-x 1 root root 27M Mar 18 2025 ctd-decoder -rwxr-xr-x 1 root root 55M Mar 18 2025 crictl -rwxr-xr-x 1 root root 56M Mar 18 2025 critest -rwxr-xr-x 1 root root 39M Mar 18 2025 containerd -rwxr-xr-x 1 root root 6.4M Mar 18 2025 containerd-shim -rwxr-xr-x 1 root root 7.4M Mar 18 2025 containerd-shim-runc-v1 -rwxr-xr-x 1 root root 13M Mar 18 2025 containerd-shim-runc-v2 -rwxr-xr-x 1 root root 18M Mar 18 2025 containerd-stress -rwxr-xr-x 1 root root 19M Mar 18 2025 ctr

解压新版本(--strip-components=1去掉压缩包内的bin/目录层级,直接覆盖到/usr/local/bin/):

# tar tf containerd-2.3.2-linux-amd64.tar.gz bin/ bin/containerd bin/containerd-shim-runc-v2 bin/ctr bin/containerd-stress # tar -xzvf containerd-2.3.2-linux-amd64.tar.gz --strip-components=1 -C /usr/local/bin/

更新后(containerd 主程序及相关组件更新为Jun 19时间戳;注意旧版的containerd-shimcontainerd-shim-runc-v1等 2.0 已废弃的 shim 仍保留,但不再使用):

# ll /usr/local/bin/ total 286M -rwxr-xr-x 1 root root 42M Jun 19 07:14 containerd -rwxr-xr-x 1 root root 8.1M Jun 19 07:14 containerd-shim-runc-v2 -rwxr-xr-x 1 root root 22M Jun 19 07:14 containerd-stress -rwxr-xr-x 1 root root 25M Jun 19 07:14 ctr lrwxrwxrwx 1 root root 33 Jul 14 2025 nerdctl -> /usr/local/containerd/bin/nerdctl -rwxr-xr-x 1 demo demo 23M Mar 28 2025 etcd -rwxr-xr-x 1 demo demo 18M Mar 28 2025 etcdctl -rwxr-xr-x 1 root root 27M Mar 18 2025 ctd-decoder -rwxr-xr-x 1 root root 55M Mar 18 2025 crictl -rwxr-xr-x 1 root root 56M Mar 18 2025 critest # 2.0 已废弃 -rwxr-xr-x 1 root root 6.4M Mar 18 2025 containerd-shim # 2.0 已废弃 -rwxr-xr-x 1 root root 7.4M Mar 18 2025 containerd-shim-runc-v1

2.7.重启 containerd 并验证

systemctl restart containerd systemctl status containerd

3.验证升级结果

逐节点升级完成后,确认运行时版本已更新为containerd://2.3.2

# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME x.x.x Ready control-plane 344d v1.35.6 x.x.x.x Ubuntu 24.04.4 LTS 6.8.0-124-generic containerd://2.3.2 x.x.x Ready control-plane 344d v1.35.6 x.x.x.x Ubuntu 24.04.4 LTS 6.8.0-124-generic containerd://2.3.2 x.x.x Ready control-plane 344d v1.35.6 x.x.x.x Ubuntu 24.04.4 LTS 6.8.0-124-generic containerd://2.3.2

问题处理

1.Kubernetes 问题处理

1.1.基础镜像版本不一致

问题原因

新版 kubeadm 默认使用的 pause 镜像版本与节点上 containerd 配置的不一致。

表现形式

在执行 kubeadm upgrade apply 时,可能会出现基础镜像不一致的告警

detected that the sandbox image "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8" of the container runtime is inconsistent with that used by kubeadm. It is recommended to use "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10" as the CRI sandbox image.
解决方式

查看当前 kubeadm 期望的镜像版本:

# kubeadm config images list # 此处报错是由于无法连接 "https://dl.k8s.io/release/stable-1.txt",但不影响输出所需镜像 W0626 10:30:12.306990 2755682 version.go:108] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://dl.k8s.io/release/stable-1.txt": context deadline exceeded (Client.Timeout exceeded while awaiting headers) W0626 10:30:12.307154 2755682 version.go:109] falling back to the local client version: v1.35.6 registry.k8s.io/kube-apiserver:v1.35.6 registry.k8s.io/kube-controller-manager:v1.35.6 registry.k8s.io/kube-scheduler:v1.35.6 registry.k8s.io/kube-proxy:v1.35.6 registry.k8s.io/coredns/coredns:v1.13.1 registry.k8s.io/pause:3.10.1 registry.k8s.io/etcd:3.6.6-0 # 查看当前 containerd 实际配置 grep -i 'pause:' /etc/containerd/config.toml sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8"

把 containerd 配置中的 pause 版本更新到提示的新版本,然后重启 containerd 即可:

sed -i 's#pause:3.8#pause:3.10.1#' /etc/containerd/config.toml systemctl restart containerd

1.2.集群更新使用的版本格式问题

问题原因

升级时kubeadm upgrade apply所用版本不是 K8s 版本号

表现形式

升级时提示版本无效

# kubeadm upgrade apply 1.33.13-1.1 error execution phase preflight: the version argument is invalid due to these errors: - Specified version to upgrade to "v1.33.13-1.1" is an unstable version and such upgrades weren't allowed via setting the --allow-*-upgrades flags Can be bypassed if you pass the --force flag
解决方式

kubeadm upgrade apply所用的版本必须是K8s 版本号(如1.33.13),而不是 apt 包的 Ubuntu 格式(如1.33.13-1.1):

# kubeadm upgrade apply 1.33.13

1.3.集群配置中 controlPlaneEndpoint 与实际 bindPort 不一致

问题原因

这个告警无需在意,它只是提示controlPlaneEndpoint覆盖了bindPort。本集群用 HAProxy 做负载均衡,前端监听16443,再转发给后端 kube-apiserver 的6443,所以这个覆盖正是预期行为。

表现形式

升级过程中 kubeadm upgrade 输出:

WARNING: port specified in controlPlaneEndpoint overrides bindPort in the controlplane address
解决方式

符合预期即可,无需解决:

# ss -nltup | grep 6443 tcp LISTEN 0 2000 0.0.0.0:16443 0.0.0.0:* users:(("haproxy",pid=1892947,fd=10)) tcp LISTEN 0 2000 127.0.0.1:16443 0.0.0.0:* users:(("haproxy",pid=1892947,fd=11)) tcp LISTEN 0 16384 *:6443 *:* users:(("kube-apiserver",pid=1697748,fd=4)) # kubectl -n kube-system get cm kubeadm-config -o yaml | grep -i 'controlPlaneEndpoint' controlPlaneEndpoint: 10.51.0.249:16443 # cat /etc/haproxy/haproxy.cfg global maxconn 2000 ulimit-n 16384 log 127.0.0.1 local0 err stats timeout 30s defaults log global mode http option httplog timeout connect 5000 timeout client 50000 timeout server 50000 timeout http-request 15s timeout http-keep-alive 15s frontend monitor-in bind *:33305 mode http option httplog monitor-uri /monitor frontend k8s-master bind 0.0.0.0:16443 bind 127.0.0.1:16443 mode tcp option tcplog tcp-request inspect-delay 5s default_backend k8s-master backend k8s-master mode tcp option tcplog option tcp-check balance roundrobin default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100 server x.x.x x.x.x.x:6443 check server x.x.x x.x.x.x:6443 check server x.x.x x.x.x.x:6443 check

1.4.集群更新使用的 containerd 版本过旧

问题原因

使用的 containerd 版本较旧:K8s 1.36 版本后会删除 "从 kubelet 配置读 cgroupDriver" 这个老机制(fallback),改用 CRI 的RuntimeConfig方法从 containerd 直接探测。但当前 containerd 1.7 不支持这个新方法,所以出现警告。根据官网说明,在 K8s 1.38 版本前完成 containerd 升级即可。

表现形式

v1.34.x升级到v1.35.x时,kubeadm 输出ContainerRuntimeVersion告警:

# kubeadm upgrade apply 1.35.6 [upgrade/preflight] Running preflight checks [WARNING ContainerRuntimeVersion]: You must update your container runtime to a version that supports the CRI method RuntimeConfig. Falling back to using cgroupDriver from kubelet config will be removed in 1.36. For more information, see https://git.k8s.io/enhancements/keps/sig-node/4033-group-driver-detection-over-cri
解决方式

升级 containerd 版本即可

2.Containerd 问题处理

http://www.jsqmd.com/news/1139259/

相关文章:

  • STM32与MC6470 IMU运动控制开发实战
  • 嵌入式AI编程:代码补全的本质与智能开发重定义
  • 2024接口测试实战:从契约到自动化,应对微服务与多仓复杂场景
  • 基于大数据+Hadoop的智能客服系统的设计与实现毕业设计任务书
  • AI视频风格迁移实战:从原理到代码实现监控画风附身
  • 对象存储全景深度解析:MinIO 与阿里云OSS全维度对比分析
  • WSA-Pacman:Windows 11安卓应用管理的终极图形化解决方案
  • Linux软件管理与编辑器命令速查手册
  • 阿兹特克的黄昏:英格兰3-2逆转墨西哥的战术叙事
  • Runway广告本地化Recipe:API一键解决多语言素材生成难题
  • 本地部署AI生成工具:从环境配置到实战应用全指南
  • 信号完整性实战:3种端接方案(串联/并联/戴维南)对50Ω传输线反射抑制效果实测
  • HORIZON框架解析:域核心与动态鲁棒阈值设计
  • 2026年7月6日复测:什么八字排盘软件好用?第三方测评拆到排盘底层
  • 洛雪音乐聚合音源:打破平台壁垒的终极开源解决方案
  • Python全栈项目--手机语音远程控制智能家居系统(含嵌入式控制)
  • SERL:让真机强化学习从“难用”走向“可复现”的强化学习框架 ----
  • 【Springboot毕设全套源码+文档】基于springboot闲一品交易平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • 短示例驱动的仿生运动风格迁移方法
  • LLM代码生成实战评测:Opus 4.7与GPT-5.5交付稳定性对比
  • 汽车大灯设计技术解析:LED矩阵与智能控制应用实践
  • Silverlight提示:是否要允许此Web应用程序访问您的剪切板的常见问题?
  • 为什么野指针这么危险?C语言最隐蔽的崩溃元凶,一文彻底搞懂
  • 大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法
  • Filebeat入门实战:从零搭建轻量日志采集管道
  • 4.1 学习目标:一张图读懂数据治理、数据管理、数据运维的边界与共生关系
  • MySql-安装详细教程
  • Zotero-GPT:用AI重新定义你的文献管理效率
  • 互联网信息服务算法备案流程指南和材料要求
  • SeaTunnel 的 Zeta 引擎采用集群模式运行作业。