Skip to main content

Command Palette

Search for a command to run...

(闲聊)听说 K8s 要甩了 Docker?

Updated
1 min read

今天偶然看到 Kubernetes 1.20 的 ChangeLog,其中有一行大动作:

Deprecation
Docker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called "dockershim" which implements CRI support for Docker and it has seen maintenance issues in the Kubernetes community. We encourage you to evaluate moving to a container runtime that is a full-fledged implementation of CRI (v1alpha1 or v1 compliant) as they become available. (#94624, @dims) [SIG Node]

大意是,Kubelet 中的 Docker 支持已经进入淘汰阶段,将在未来移除。原因是 Kubelet 中使用 dockershim 组件为 Docker 提供了 CRI 支持,Kubernetes 认为维护这个组件是有问题的。建议用户评估并迁移到 CRI 支持更完善的运行时上。

其中引用了 9 月提出的 PR #94624。其中提出,为了使用 Docker,从 moby 进行了大量移植开发了 dockershim 嵌入到 Kubelet 之中。Kubelet 和 CRI 的正确沟通方式是像 containerd、cri-o 这样。各自使用独自的进程,互相以 gRPC 进行对接。Docker 目前仍然是主流,进行迁移需要广而告之并逐步推进。

实际上早在 2018 年 5 月,Kubernetes 的 Containerd 集成就已经宣告了 GA。其中有两张图很能说明问题:

在 1.0 中,Kubelet 使用 Docker Shim 和 Docker 进行通信,Docker 再和下面的 containerd 进行通信。

此时如果采用 containerd 作为运行时,Kubelet 要使用 CRI Containerd 和 Containerd 打交道,不过相对于 Docker,还是少了一跳。

在 1.1 中这个结构得到了优化——Containerd 直接内置 CRI 接口,Kubelet 甩掉包袱可以直接用 CRI 方式对 Containerd 进行控制,这样就又省了一跳。

此时 Docker 在这个调用链上的位置已经有点尴尬。随着其它 CRI 运行时的发展,这种尴尬越发明显。#94624 中提到过,Docker 有个优势就是提供了 Build 等“Kubelet 不需要但是很有用”的功能;然而换个角度来看,这些功能是有悖于单一职责的原则的。

个人认为,Docker 这样的全能选手,在计算节点上的长期存在证明了这个阶段里,计算节点还没有进入理想的 cattle 状态,用户一方面还没有心思对“多余”的功能进行剪裁,另一方面还有可能人工进入节点上进行运行时范围以外的操作。在 GA 一年多之后,砍刀开始落下,说明了什么呢?

  • 容器和 Docker 这两个经常被混用的词,其间的边界可能会变得越来越清晰,构建、运行、管理越来越倾向于使用各自领域的专业工具各司其职;

  • 计算节点会变得更加“没性格”,换句话说,仅为了“运行容器”为目的的基础设施软件,例如操作系统、CRI 这样的工具会逐步代替大而全的通用 Linux Server 操作系统和 Docker 出现在容器节点上;

  • “没性格”的计算节点将会更加容易地被创建、运行、调整和销毁,也就是说会提高容器集群规模的伸缩能力,甚至逐渐形成普遍的动态扩缩容能力。

  • 集群级别的批量化、自动化运维能力的要求会越来越高——或者以后的节点上没有 ssh、vim 也未可知。

带点个人感情的说,前两天刚刚遭遇 DockerHub 限流的我还是生出了一点卑鄙的快意,Google 的铁拳再一次敲在了 Docker 的头上,Docker EE 怎么办?但是 Docker Desktop for Mac 还是真香的。

More from this blog

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

僭越了,有人在用 Rust 写 Kubernetes

一个新语言问世,最爱做的事情之一,就是重写存量软件了。 云原生喝酒 SIG 重点扶持项目——rk8s(https://github.com/rk8s-dev/rk8s) 也可以归在这个范畴里,只不过这个项目重写的东西比较大,是 Kubernetes。 从 2025 年 1 月第一个 Commit 开始,到现在有了 200 多次 Commit,十几万行代码。当然距离 Kubernetes 的几百万行代码还差得远——老马就是喜欢整这种大无畏项目。 另外该项目也是国内第一个脱离 Cargo 转向使用 ...

Sep 27, 20253 min read

【伪】架构师

342 posts