Skip to main content

Command Palette

Search for a command to run...

Kubernetes 1.11:Google 内部怎么看

Updated
1 min read

原文:Kubernetes 1.11: a look from inside Google

作者:Craig Box

恭喜参与到近期 Kubernetes 1.11 发布的所有人。现在 Kubernetes 核心已经稳定,在 Google,我们已经将焦点转移到上游——提高 Kubernetes 的扩展性,也就是说,要把更多组件转移到其他仓库之中。因为项目已经成熟,添加新插件已经不再意味着“给 Tim Hockin 提交一个 PR”了,而是意味着创建恰当的、具备良好规范的类似 CNI、CRI 以及 CSI 的接口了。实际上,成熟性和扩展性是帮助 Kubernetes 成为企业平台的重要助力。在三月,我们发表文章:a look at what was new in Kubernetes 1.10,现在来到 1.11 版本,我们来看看 Google 驱动的 Kubernetes 核心工作,以及近三个月来,我们在 Kubernetes 基础之上做出的一些创举。

1.11 的新特性

优先和抢占

Pod 的优先级和抢占能力是我们内部调度系统的主要功能之一,这一功能让我们的数据中心能在较高的资源利用率上运行。我们在 Kubernetes 1.9 作为 Alpha 特性引入了这一功能,现在我们增强了调度性能,并提高了对关键的系统 Pod 的支撑能力。现在我们放心的将其提升至 Beta 阶段,这表明在 Kubernetes 1.11 集群中,这一功能缺省已经开启。这是很多运行大规模集群用户所翘首以待的重要功能。

CRD 的变化

CRD 是 Kubernetes 中最流行的扩展机制之一,1.11 中这方面提供了新的特性,对 CRD 进行了进一步的强化。CRD 现在在大量的 Kubernetes 扩展中得到了广泛应用,例如使用 Kubernetes API 调用 Spark 或 Functions。

Kubernetes 对象具备架构版本(例如 v1beta1 或者 v1)的支持,但是我们在 ETCD 数据库中只保存一个版本。如果对一个对象的某版本进行查询,服务端会进行一次转换,把对象转换为符合请求版本的对象返回给查询方。

从前 CRD 作者智能删除和重建资源来完成版本之间的迁移。在 1.11 中,可以为 CRD 资源定义多个版本。下一步会支持 CRD 的服务端转换,从在不破坏现有客户端的情况下,进行字段更名等结构变化。

云提供商插件

Google 在 Kubernetes 核心上持续投入,以期提高他的可持续性和对多云的移植性。Cloud Provider 接口让基础设施提供商在自己的平台上为用户负载提供开箱即用的体验,更方面的提供类似存储自动供给、以及外部负载均衡等基础服务。

这部分代码目前编译在 Kubernetes 核心中。Google 花了大力气 来把这些功能转移到云供应商相关的仓库之中,从而给 Kubernetes 核心减负。这也能让供应商们可以更快速的进行相关的增强和扩展,而不必受到 Kubernetes 的三个月发布周期的限制。作为这项工作的一部分,我们宣布创立了 SIG-CloudProvider,这个特别小组负责这方面的技术前瞻和监督工作。

1.11 中不包含的新特性

头条都不是这么写的对吧?

服务端 Apply 没有出现在 1.11 中——一个字节都没,这个功能会把 kubectl apply 的逻辑从客户端移植到服务端,这样这一行为就更加清晰,并且允许更多客户端能够借助服务端的帮助进行处理,而无需借助 kubectl 作为外援工具了。

一般说来,这种功能完成之后就会提交给项目。但是如果发布已经到期,这个功能却尚未就绪,就需要大量的工作来进行恢复。Google 投入不少精力来进行 Kubernetes 的特性分支的管理,这一举措使得长周期的功能分支和主分支可以并行前进,从而避免了发布前的混乱。这也从侧面印证了 Kubernetes 项目对项目稳定性的保障能力。

服务端 Apply 方面的工作正在他自己的特性分支中公开进行,我们期待它准备就绪的时候加入 Kubernetes。

Kustomize

我们思考了很多关于应用配置的声明式管理方面的问题。一个常见的模式是 Helm(基于 Google Cloud 的 部署管理器)这样的模板方案,他需要用户学习一种不同的配置语言,而不是那种用户发起查询之后 API Server 返回的内容。模板的形式还意味着当用户下载一个 YAML 示例之后,还需要把它还原成一个模板,才能在自己的环境中应用。

Kustomize 中,我们引入了一种新的定义应用的方式。Kustomize 允许用户在现有的 YAML 配置中加入层的概念,使得用户可以对 Fork 回来的仓库进行本地的变更,或者为生产和预发布环境设置不同的配置和副本数量等。

Kustomize 很适合 GitOps 风格的工作流,用一个通用配置作为基础,然后在各个方向使用层的方式来创建不同的变体。基础版本和层都可以被不同的团队在不同的仓库之间进行管理。

应用 API

应用是由多种服务和资源组成的。应用创建起来之后,并没有定义良好的方式在 Kubernetes 中定义一个应用的所有相关组件。我们希望集群用户能够在应用的角度上进行思考,允许工具和界面来定义、更新和展示一个以应用为中心的集群。

新的 Application API 提供了一个方式对 Kubernetes 组件进行聚合(例如 Service、Deployment、StatefulSet、Ingress 以及 CRD 等),并作为一个分组进行管理。

我们的朋友,包括三星、Bitnami、Heptio、Red Hat 都做出了很多贡献,我们希望有更多的贡献和反馈,来证实这一项目对社区的增值作用。

应用 API 目前是 Alpha 状态,我们希望在接下来的几周之内将其升级为 Beta 阶段,这期间我们会发布更多这方面的材料。

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