Skip to main content

Command Palette

Search for a command to run...

开发和 Kubernetes 之间的鸿沟

Updated
1 min read

原文:There’s a Gap Between Devs and Kubernetes

作者:Kent Rancourt

我用 Kubernetes 谋生,多数时间里,我都在为 Kubernetes 开发开源软件平台、中间件以及工具。我经常会问我自己以及我的同事:“我们要解决的问题是什么?”以及“我们要为谁解决问题?”。这种提问让我们能够保持对目标的专注,明确产品的价值。我也会把类似的问题抛给前同事们以及本地 Meetup 的参与者——他们各自的公司都在 “Kubernetes 之旅”的途中。如果他们正在构建或准备采用的是一个新的 Kubernetes 的相关工具,我通常会询问要解决的问题以及为谁解决问题。更多情况下,我会询问他们在采用 Kubernetes 的过程中遇到的问题。

不管采用 Kubernetes 的进度如何,两个回应是最常见的。第一个是“Kubernetes 太难了”,另一个是“Kubernetes 的抽象是错的”。第二个问题经常会用设问的方式提出:“Kubernetes 的抽象对么?”。

这种陈述缺乏了重要的上下文。其中没有澄清 Kubernetes 对来说太难了?对来说抽象有问题?在进一步的探求中,我得到的答案基本上来说是一致的:“开发者”。那么前面的陈述就可以修正为:Kubernetes 对开发者来说太难了,对开发者来说,Kubernetes 的抽象是不对的。

“对开发者来说,Kubernetes 的抽象是错误的”,这个陈述通常的意思就是,Kubernetes 只提供了用于声明应用部署和服务的原语,而开发者更多关注的是商业价值的交付过程,而非 Kubernetes 细枝末节的学习,Kubernetes 没有提供更符合开发者期待的抽象模型。它没有提供部署应用的直接选项。两个问题合二为一——对于开发者来说,Kubernetes 的抽象是错误的,因此就太难了。

对此,我的观点是,Kubernetes 不是为开发者而生的。很多人会同意我的观点,但是令人惊奇的是,很多人压根没想过这个问题。

更少就是更多?对开发者来说,正确的抽象就是完全不抽象?毕竟在 Kubernetes 甚至是 Docker 诞生之前的几十年里,开发者一直使用自己惯用的技术栈进行开发和测试,所谓的应用抽象(或者 Kubernetes)的缺失,并不会让这些工作无法进行。我对开发者的建议是,开发者可以不关注 Kubernetes。

Kubernetes 是谁的?

在 Kubernetes 之前,组织中会存在一个角色,可以称其为部署专家,这个角色的职责是构建并部署应用和服务。他们需要对平台或相应的技术堆栈有着相当详细的认识,还可能需要一些复杂的、深奥的知识背景,有些自制的部署工具,以及大量的脚本。其工作可能是:部署 Ruby 应用、Python 应用、Tomcat 上的 Java 应用、WebSphere 应用等等不同的任务。这些人才是 Kubernetes 的目标用户——他们熟知应用部署的知识。Kubernetes 为这些用户提提供了能描述所有(容器化)应用的一致的部署模型,能够很好地提高其生产力并降低其学习成本。

经常有一个对 Kubernetes 的误解就是平台(“平台即服务”中的平台),其实它不是。即使是清楚这一点的人也往往对此视而不见,这样就会忽视掉部署专家这一角色的存在。潜意识中,对开发人员产生了一种不切实际的期望:他们应该能够自己使用 Kubernetes,从而可以取代部署专家这一角色。

知道了这些,也就成功了一半了。Kubernetes 并非为开发人员而生,更进一步思考,有三个可能的办法。

  1. 我认为最好将开发专家的角色重新加入组织。要完成这一过程,部署专家必须融入到开发团队中,或至少与开发团队紧密合作——和过去一样。我倾向于这种方法的原因是一个称职的部署专家能够优化部署并完成复杂的场景,其他方法难于做到这一点。不幸的是,这种办法可能最难落地。这种方式要对组织进行改进而非技术,从而弥合开发者和 Kubernetes 之间的鸿沟,但是大多数组织缺乏这样的自觉和进取心。

  2. 可能你是一个初创企业,只有五个开发者,没人想再承担一个部署专家的角色;又可能你是一个有几千开发者的企业,无法将部署专家的角色扩展到支持整个开发团队,资源限制之下,第一个办法无法实施。这种情况下,就只能靠工具或者平台之类的技术手段来拉近开发者和 Kubernetes 了。坦率的说,这就是我和很多人的饭碗。然而不要低估识别和构建合适方案的成本(自建平台正在大行其道),其所需成本可能轻松地超越第一种方法。另外也不应忽视的一点是,平台和工具也都有自己的侧重点,可能会让用户陷入新的困境。用两个新问题解决一个旧问题可能不是个好办法。

  3. 最后一点,可能你的组织还没有准备好采用 Kubernetes——甚至可能并不需要它。如果一个 Heroku 这样的 PaaS 甚至一个非 Kubernetes 的自建平台能够满足组织的需求,为什么还要给 Kubernetes 缴税?这种情况下,消灭开发人员和 Kubernetes 之间鸿沟的最好方法就是——不要使用 Kubernetes。再次提醒:准备好受到限制,并清楚认识未来走向。

结论

Kubernetes 并非为开发者而生,不要太快的认为,技术是唯一填补这一鸿沟的方法。强烈建议考虑,首先在组织层面做出改变。

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