Skip to main content

Command Palette

Search for a command to run...

Kubernetes 1.12 中的 RuntimeClass

Updated
1 min read

原文:Kubernetes v1.12: Introducing RuntimeClass

起初,Kubernetes 只支持运行于 Docker 容器中的 Linux 本地应用。Kubernetes 1.3 中,rtk 为首的其他运行时支持开始逐步浮现,促成了容器运行时(CRI)的诞生,更多的项目也因此加入了这一行列 :Kata ContainergVisor 实现了更好的工作负载隔离;Kubernetes 的 Windows 支持也一直在稳步发展

不同的容器运行时面向不同的使用场景,也就产生了在同一集群中使用混合运行时的需要。但是这所有不同的运行容器的方式都带来了一些亟待处理的问题:

  • 用户如何列出、并为工作负载选定合适的运行时?
  • 如何保证让 Pod 被调度到支持指定运行时的节点上?
  • 各种运行时都支持什么样的特性?如何让用户了解到这其中的兼容问题?
  • 多种运行时的不同资源开销如何应对?

RuntimeClass 为此而来。

Kubernetes 1.12 中的 RuntimeClass

RuntimeClass 在 Kubernetes 1.12 中实现,目前为 Alpha 阶段。初始阶段的焦点是提供一个对运行时进行选择的 API,并且为解决其它多运行时方面的问题进行了一些尝试。

RuntimeClass 资源对 Kubernetes 集群上的容器运行时进行了描述。集群安装程序用 RuntimeClass 对运行时进行安装、设置和定义。目前 RuntimeClassSpec 包含一个字段 RuntimeHandler。运行于节点上的 CRI 会对 RuntimeHandler 进行解释,将其映射为实际的运行时配置。PodSpec 也随之进行了扩展,加入了一个 RuntimeClassName 字段,这个字段的值代表运行该 Pod 所需的 RuntimeClass 的名称。

为什么 RuntimeClass 是个 Pod 级的概念?Kubernetes 资源模型能够在 Pod 中的不同容器之间共享某些资源。如果组成 Pod 的不同容器具有不同的资源模型,会对资源共享造成很大的挑战。例如在不同虚拟机之间共享 loopback 适配器是极其困难的,但是在同一 Pod 中的两个容器之间进行通信时,这是个非常普遍的需要。

下一步?

要向控制面呈现运行时属性,RuntimeClass 资源是个很重要的基础。例如要在多种不同运行时 Node 组成的集群中实现调度支持,我们可能需要在 RuntimeClass 定义中实现 NodeAffinityPod Overhead proposal 在这方面做出了一些早期尝试,和 RuntimeClass 非常匹配,未来会逐步进行跟进。

目前还提出了很多其它的 RuntimeClass 扩展,会逐步进行进一步的研究和开发。正在考虑的扩展包括:

  • 呈现容器运行时所支持的可选特性,并为不兼容功能引发的错误提供更好的展示。
  • 将运行时的功能发现过程进行自动化,从而为自动的调度决策提供支持。
  • 提供运行时的自动注册功能,这样用户就可以在不停机的情况下为现有集群中安装新的运行时。
  • 为 Pod 的需求提供合适的 RuntimeClass。例如指定运行时属性,让系统自行对 RuntimeClass 进行匹配,从而避免显式指定 RuntimeClass

至少到 2019 年。RuntimeClass 的开发工作都会保持活跃,我们很高兴,从 Kubernetes 1.12 开始,这一功能以 Alpha 的形态成功面世。

还有更多

作为一个 Alpha 功能,还需要一些额外的设置步骤才能够使用 RuntimeClass。详情请参考 RuntimeClass 文档

RuntimeClass Kubernetes ENhancement Proposal 之中包含了更多的设计细节。

Sandbox Isolation Level Decision 一文介绍了将此方案落地到 Pod 级的思考过程。

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