news 2026/4/22 3:41:12

K8s 1.30 震撼发布!抛弃 Dockershim 之后,老旧集群该如何平滑升级?(附踩坑清单)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8s 1.30 震撼发布!抛弃 Dockershim 之后,老旧集群该如何平滑升级?(附踩坑清单)

⚠️ 前言:出来混,技术债迟早要还的

Kubernetes 1.30(代号Uwubernetes)已经稳定运行一段时间了,很多同学看着新特性眼馋,却迟迟不敢升级。

为什么?因为你们手里还攥着 1.23 甚至更老版本的集群。
横在你们面前的最大的拦路虎,不是 Control Plane 的升级,而是那个令无数运维闻风丧胆的变更——Dockershim 的彻底移除

在 1.24 之前,K8s 为了兼容 Docker,硬是在 Kubelet 里塞了个“翻译官”叫 Dockershim。现在翻译官被裁员了,K8s 只要CRI(容器运行时接口)。这意味着:你必须把 Docker 换成 Containerd 或 CRI-O,否则节点将无法启动。

很多兄弟担心:“换了运行时,我的镜像怎么办?我的 CI/CD 脚本怎么办?业务会挂吗?”

别慌。今天我就用一套经过生产环境验证的**“平滑迁移方案”**,带你安全“着陆”到 K8s 1.30 时代。


🔍 深度原理:为什么要“干掉”Docker?

这并不是 K8s 针对 Docker,而是为了架构的纯粹性。

旧架构 (1.24 之前):
Kubelet ->Dockershim (翻译层)-> Docker Daemon -> containerd -> 容器

新架构 (1.24 及以后):
Kubelet ->CRI 插件-> containerd -> 容器

K8s_1.30架构
旧时代架构
调用
翻译指令
调用
直连 CRI 接口
containerd
Kubelet
Dockershim 代码
Kubelet
Docker Daemon
containerd

剥离的好处:

  1. 路径更短:少了一层调用,性能提升。
  2. 更稳定:Docker Daemon 重启不再影响 Pod 运行。
  3. 标准化:任何符合 CRI 标准的运行时(如 gVisor, Kata Containers)都能无缝接入。

🛠️ 实战教程:从 Docker 切换到 containerd

注意:生产环境建议采用**“滚动升级”**策略,先对一台非核心节点进行以下操作。

1. 驱逐节点 (Cordon & Drain)

先让节点“只出不进”,并把现有的 Pod 赶到其他节点去。

kubectl cordon node-01 kubectl drain node-01 --ignore-daemonsets --delete-emptydir-data
2. 配置 containerd

Docker 安装时通常自带了 containerd,但我们需要开启它的 CRI 插件功能。

# 生成默认配置mkdir-p /etc/containerd containerd config default>/etc/containerd/config.toml# ⚠️ 关键步骤:修改 SystemdCgroup# 打开 config.toml,找到 SystemdCgroup = false 改为 truesed-i's/SystemdCgroup = false/SystemdCgroup = true/g'/etc/containerd/config.toml# 重启 containerdsystemctl restart containerd
3. 修改 Kubelet 配置

告诉 Kubelet:“别找 Docker 了,去连 containerd 吧。”

编辑/var/lib/kubelet/kubeadm-flags.env/etc/default/kubelet,添加以下参数:

--container-runtime-endpoint=unix:///run/containerd/containerd.sock
4. 重启 Kubelet 并验证
systemctl restart kubelet# 查看节点状态,VERSION 栏应该显示 containerd://x.x.x 而不是 docker://...kubectl get nodes -o wide

确认无误后,kubectl uncordon node-01恢复节点上线。


💣 踩坑清单:那些文档里没写的“暗雷”

这才是本文最值钱的部分。切换运行时后,你的很多习惯得改改了。

坑一:docker ps啥也看不到了?

现象:升级后习惯性输入docker ps,结果空空如也,但kubectl get pod显示业务在跑。
原因:Docker Daemon 已经被旁路了,它根本不知道 K8s 在跑什么容器。
解法:拥抱新工具crictl。它是 CRI 时代的命令行工具。

  • crictl ps(查看容器)
  • crictl images(查看镜像)
  • crictl logs <id>(查看日志)

配置 crictl:

# 创建 /etc/crictl.yamlruntime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout:10debug:false
坑二:镜像构建挂了?(Docker in Docker)

现象:Jenkins 流水线里用挂载/var/run/docker.sock的方式构建镜像,升级后报错“文件不存在”。
原因:Dockershim 移除了,Kubelet 不再拉起 Docker Daemon。
解法

  1. Kaniko:谷歌推出的无 Daemon 构建工具(推荐)。
  2. 独立构建机:不要在 K8s 节点上构建,专门搞一台装 Docker 的机器做 CI。
坑三:日志采集失效

现象:Fluentd 或 Filebeat 采集不到日志了。
原因

  • Docker 的日志默认是 JSON 格式。
  • Containerd (CRI) 的日志默认是空格分隔的标准格式(time stream log)。
    解法:修改日志采集器的 Parser 配置,或者在 containerd 配置中强行改回 json 格式(不推荐)。
坑四:“k8s.io” 命名空间

现象:手动用ctr(containerd自带工具) 拉了镜像,K8s 却说找不到。
原因:containerd 有命名空间(namespace)概念。K8s 默认用k8s.io,而ctr默认用default
解法

ctr -n k8s.io images pull nginx:latest# 或者直接用 crictl (它自动识别 k8s.io)

📝 总结

升级到 K8s 1.30 并抛弃 Docker,是每个云原生团队的必经之路。

虽然过程痛苦,像是给行驶中的汽车换引擎,但换完之后,你将拥有更轻量、更稳定、且符合未来标准的底座。

别害怕改变,技术人的护城河,就是在一次次填坑中建立起来的。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 6:48:25

2025降噪耳机排行榜前十名:漫步者领衔,国产耳机以高性价比破局

科技与性价比的完美结合&#xff0c;让降噪耳机从高端奢侈品成为了大众日常工具。无论是在嘈杂的地铁上、喧闹的办公室中&#xff0c;还是长途飞行的旅程中&#xff0c;一款优秀的降噪耳机都能为你创造一片宁静的听觉空间。2025年&#xff0c;中国耳机品牌凭借卓越的技术实力和…

作者头像 李华
网站建设 2026/4/18 7:25:19

GLM-4.5开源大模型:智能体开发的新时代引擎

GLM-4.5开源大模型&#xff1a;智能体开发的新时代引擎 【免费下载链接】GLM-4.5-Air-Base 项目地址: https://ai.gitcode.com/zai-org/GLM-4.5-Air-Base 在人工智能技术飞速发展的今天&#xff0c;智谱AI正式推出GLM-4.5系列开源大模型&#xff0c;这款专为智能体应用…

作者头像 李华
网站建设 2026/4/19 14:02:38

终极智能垃圾桶制作指南:用Johnny-Five轻松实现自动感应开盖

想要打造一个能自动感应开盖的智能垃圾桶吗&#xff1f;只需简单的JavaScript编程和基础硬件连接&#xff0c;你就能拥有这款提升生活品质的智能设备。本文将手把手教你如何利用Johnny-Five框架&#xff0c;结合红外传感器和舵机&#xff0c;快速构建一个完全自动化的智能垃圾桶…

作者头像 李华
网站建设 2026/4/19 19:35:13

ComfyUI-Frame-Interpolation:5个步骤让视频动画更流畅

ComfyUI-Frame-Interpolation&#xff1a;5个步骤让视频动画更流畅 【免费下载链接】ComfyUI-Frame-Interpolation A custom node set for Video Frame Interpolation in ComfyUI. 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Frame-Interpolation ComfyUI-Fr…

作者头像 李华
网站建设 2026/4/18 23:25:05

如何5分钟搭建个人音乐中心:小爱音箱终极玩法指南

如何5分钟搭建个人音乐中心&#xff1a;小爱音箱终极玩法指南 【免费下载链接】xiaomusic 使用小爱同学播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为音乐会员烦恼&#xff1f;想不想让小爱音箱变成…

作者头像 李华
网站建设 2026/4/16 12:41:47

​​​​​​​拼多多API揭秘:如何在低价竞争中突出重围?

导语&#xff1a; 在拼多多这个以“低价”为核心竞争力的平台上&#xff0c;商家间的价格战异常激烈。单纯的低价策略已难以保证利润和可持续性。本文将深入探讨如何巧妙利用拼多多的开放API接口&#xff0c;在低价的红海中找到差异化竞争点&#xff0c;实现突围。 一、 低价困…

作者头像 李华