Skip to main content

Command Palette

Search for a command to run...

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

Published
•1 min read•View as Markdown

今天偶然看到 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

AI Agent 的“莫兰迪时刻”

一个新范式真正走向大众,往往不是从所有人都正确理解它开始,而是从它开始被反复引用、简化、误读,甚至滥用开始。 今天的 AI Agent,可能正走到这样一个时刻。 这篇文章的念头,来自我最近收听《大内密谈》vol.1434《审美升级or消费主义?从莫兰迪在中国聊起》时的一些联想。节目从莫兰迪色在中国的走红,谈到作品价格、知识产权、商业流量与消费主义。[9] 我听着听着想到另一个熟悉的技术史问题:为

Oct 5, 20263 min read

FDE 是传统运维产品厂商的出路吗?

很多传统运维产品厂商,已经不缺产品了。 从 ITSM、CMDB、监控、自动化,到 IAM、数据中心管理和各类大屏,一个成熟厂商往往都能拿出一张很完整的产品地图。销售材料上看,客户运维部门的日常工作几乎都被覆盖了。 但项目一落地,味道就变了。 产品越多,集成越重;模块越全,边界越模糊;客户越大,定制越深。到了后期,项目成功本身也会变成麻烦:现场改出来的东西回不到主干,配置越来越像黑箱,谁都不敢轻易升

Jun 29, 20263 min read

绵里藏针才是 AIOps 的本质?

Agent 让运维编排变得柔性、可变、甚至自演进;但真正敢进入生产环境的 AIOps,仍然离不开坚实、受控、可审计、可回退的自动化底座。 从 Gartner 提出 AIOps 概念到现在,也大概有十年了。这么多年来,这个领域好像发生了很多变化,又好像没什么“本质”的变化。技术上,我们经历了传统机器学习、深度学习和神经网络、以及大模型和智能体这样“翻天覆地”的变化;业务上,我们面对的是更多品种、更大

May 31, 20263 min read

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

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

Mar 9, 20261 min read
【

【伪】架构师

346 posts