Kubernetes创始人发声!K8s 变得太复杂了

news2024/11/22 22:57:53

关注【云原生百宝箱】公众号,获取更多云原生消息

图片

Kubernetes 变得太复杂了,它需要学会克制,否则就会停止创新,直至丢失大本营。

Kubernetes 联合创始人Tim Hockin 罕见发声。在今年的 KubeCon 上,他建议,Kubernetes 核心维护者应该权衡提议的新功能的好处和它们带来的额外复杂性。

Kubernetes 不那么闪亮了!

当初那个容器编排的平台,越来越不像自己了。K8s 本身也在变得越来越复杂,不仅开发和运维人员不堪其重,就连 K8s 内部人员也开始发声了。

Kubernetes 联合创始人、Google 杰出软件工程师 Tim Hockin 开始担忧 K8s 的未来。

Kubernetes最初由Google工程师于2014年创建,两年后成为云原生计算基金会的第一个托管项目,也是继Linux之后全丢第二大的开源项目。

高效、可扩展是K8s一直以来的亮点,尤其是可扩展,不仅可以部署和管理应用程序的可扩展性,同时还能让开发团队专注于创新软件,也能为企业为新兴技术做好准备。

9年(半)过去,K8s这个便士也许没那么闪闪“发光”了。“以前它是为高度可扩展的应用程序做支持,现在正慢慢成为更复杂工作的首选平台,比如机器学习推理。”一个典型的例子就是,两年前Kubeflow被用于Tensorflow模型的部署和推理,还有最近的LLMOps同样也看到了Kubernetes的身影。

最紧迫的挑战

“你认为K8s最紧迫的挑战是什么?”Hockin 毫无遮掩地向云原生社区中询问。

没错,意料之中的那个答案在场上被反复提及:部署和维护容器编排引擎的复杂性实在恐怖!让所有这些复杂性推给开发运维人员,简直是场噩梦!有人甚至说这是 K8s 的“最大的生存威胁”。

“必须付出一些代价,”Hockin 指出这就是K8s这么多年来吸收许多复杂性项目进来所付出的代价。不止最终用户,核心维护人员同样也受到了复杂性的影响。

复杂性越高,K8s 核心维护人员在未来轻松进行更改的敏捷性就越低。同时,软件越复杂,用户的阻力就越大

Kubernetes 正在让开发人员不堪重负。不使用 K8s 之前,开发工程师要做的是:开发应用程序,编写,测试,打包和部署。但有了 K8s 之后,开发流程全颠覆了:

对于开发人员来说,运维任务变得繁重。尤其当平台工程团队介入时,往往代表着一场战斗即将来临,他们往集群里甩入工件的同时,也对质量要求有着不低的预期,然而说服开发人员按照平台工程的要求去做,往往需要不少回合的 battle。

两条疲劳鸿沟

Kubernetes 从一个容器编排平台到如今的庞大生态,为云原生时代的开发运维创造了两条需要跨越的“疲劳鸿沟”。DevOps 团队在转向云原生架构时必须扩展其专业领域,没错,这明显超出他们的舒适区。

双方都必须学习比他们的舒适区所允许的更多的技能:基础设施团队成员必须更加适应开发人员的需求,而开发人员的工作量越来越多地覆盖了与基础设施相关的任务。

具体来讲,开发人员需要更加了解基础设施问题,另一方面,运维、基础设施或系统工程人员越来越接近开发方面,因为编写 Kubernetes 资源或 Kubernetes YAML 的方式难免需要向软件开发的同事学习,因为涉及到迭代。

更为可怕的是,截止现在都仍有一种迷恋新技术的误区:为了K8s而上K8s,为了微服务而上微服务,即便可能压根就不需要它。

图片

复杂性“就像预算”总有花完的一天

Kubernetes 软件是社区驱动的:迄今为止,该社区已有了超过74680 名贡献者,7812 家贡献企业。这离不开第一代 K8s 用户的努力,但随着新用户的不断加入,他们对 Kubernetes 工作原理的兴趣不可避免地衰减了,更多的是增加复杂的东西。

“我们添加的东西越复杂,我们消耗的预算就越多。当预算用完时,糟糕的事情就会发生,K8s 的创新就会停止,用户转向其他解决方案。”

因此,Kubernetes 项目经理需要将复杂性视为一种有限资源,比如称之为“复杂性预算”,不可能无限继续下去。

顶级 Kubernetes 工程师一致认为:对于最终用户甚至核心维护人员本身来说,K8s 变得太复杂了。是时候将复杂性纳入预算了。

K8s 内部人员得更多说“不”

Hockin 承认,他不知道如何衡量一个软件的复杂性,更不知道最终用户处理复杂软件的耐心程度。但他巧妙地转化将复杂性问题转变成了一个预算问题:“工程师通常知道自己何时超支预算。”

因此,当考虑添加新功能时,他们必须问这样的问题:我们是否有足够的复杂性预算来承担这个任务?我们应该在这方面浪费有限的预算吗?

工程师的部分工作是权衡任何决策的权衡,新功能可能带来的额外复杂性应该是需要评估的因素之一。

对代码库的一些扩充,可能会在软件的某些方面带来 5% 的性能提升,如果这会给维护人员带来更多的内部复杂性来处理,那么还值得这样做吗?如果更改 API 以满足特定用例,是否值得让所有其他用户承担此更改带来的负担?

K8s 全部工作人员都需要提高标准,同时愿意说“不”,“愿意对我们很像要的东西说不,愿意对看起来不是坏主意的事情说不,愿意对本身看起来显而易见且容易的事情说不,愿意对贡献了我们看起来真正想要的东西说不!”

通过对某些提案说“不”,可以在复杂性预算中留下一些空间来处理未来更相关的项目。

Hockin 认为,K8s 必须对今天的事情说“不”,这样我们明天才有能力做有趣的事情

Hockin 说,我们都习惯于总是认为越多越好,但 Kubernetes 现在可能更需要考虑“少即是多”。而且,Kubernetes 还有很多工作要做,但这并不意味着所有这些都需要立即完成。

图片

K8s 被取代的迹象

K8s是Google创建的,却是并不适合所有企业。如果说前几年大家追逐新技术,为了K8s而采用K8s,那么现在已经将近十年的K8s正在产生慢慢被替代的迹象。“如果你不需要Kubernetes,就不要采用它。”

即便在容器编排领域,由于它对开发人员并不友好,需要大量的时间和理解来部署、操作和故障排除,企业不得不花费大量时间用于管理Kubernetes。最近两年,企业们正在寻求其他可选项。

  • • 有的选择将Kubernetes托管出去,使用一家云供应商的托管Kubernetes服务;

  • • 有的则使用可以减少K8s操作的发行版,如Red Hat的OpenShift;

  • • 有的则使用HashiCorp的Nomad这样的替代品;

  • • 或者采用亚马逊可持续发展架构副总裁Adrian Cockcroft所说的“无服务器优先方法”,直接跳到FaaS产品,如Azure功能、亚马逊网络服务Lambda或谷歌云功能,并完全绕过Kubernetes。

此外,市面上也诞生了诸如 cycle.io 等致力于取代 K8s 容器编排王者地位的新产品,让即使是开发运维经验有限的人,也能够描述他们想要什么,并由平台负责实现。

写在最后

当然,持续的吸收扩展,让Kubernetes 快速在云原生时代壮大,但快速吸收新功能的“吸星大法”,也开始出现了反噬。目前,Kubernetes在容器编排领域的赛道上,正在被拖慢速度,而新对手正虎视眈眈,试图超越。

正如一位业内人士建议 Hockin 的那样“延迟满足”:为了保持活力,Kubernetes 应该保持未完成状态!

参考链接:

  1. 1. https://thenewstack.io/how-to-fight-kubernetes-complexity-fatigue/

  2. 2. https://thenewstack.io/tim-hockin-kubernetes-needs-a-complexity-budget/

  3. 3. https://blog.container-solutions.com/adrian-cockcroft-on-serverless-continuous-resilience

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1297605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Altera】Quartus II 软件怎么更改bank电压

前言 FPGA的bank电压要和物理设计相同,Quartus II 软件怎么更改bank电压? 步骤 启动 Pin Planner(快捷方式:CTRL Shift N)右键单击 Pin Planner 的背景,然后选择"显示 I/O bank"。右键…

学习git后,真正在项目中如何使用?

文章目录 前言下载和安装Git克隆远程仓库PyCharm链接本地Git创建分支修改项目工程并提交到本地仓库推送到远程仓库小结 前言 网上学习git的教程,甚至还有很多可视化很好的git教程,入门git也不是什么难事。但我发现,当我真的要从网上克隆一个…

Vue:Vue的开发者工具不显示Vue实例中的data数据

一、情况描述 代码: 页面: 可以看到,input获取到了data数据,但是,vue-devtool没有获取到data数据 二、解决办法 解决办法1: data.name的值不能全是中文,比如改成aa尚硅谷 解决办法2&…

Windows下使用AndroidStudio及CMake编译Android可执行程序或静态库动态库

Windows下使用AndroidStudio及CMake编译Android可执行程序或静态库动态库 文章目录 Windows下使用AndroidStudio及CMake编译Android可执行程序或静态库动态库一、前言二、编译环境三、示例C/CPP程序1、总体工程结构2、示例代码3、CMakeLists.txt(重要)4、…

【外观模式】SpringBoot集成mail发送邮件

前言 发送邮件功能,借鉴 刚果商城,根据文档及项目代码实现。整理总结便有了此文,文章有不对的点,请联系博主指出,请多多点赞收藏,您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

包装类, 泛型---java

目录 一. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 二. 泛型 2.1什么是泛型 2.2泛型的引入 2.3 泛型类语法 2.4 泛型类的使用 2.5 裸类型(Raw Type)(了解) 2.6 泛型是如何编译的 2.7 泛型的上界 2.8 泛型方法 一. 包装类 在 Java 中,由于基本…

爱智EdgerOS之深入解析AI图像引擎如何实现AI视觉开发

一、前言 AI 视觉是为了让计算机利用摄像机来替代人眼对目标进行识别,跟踪并进一步完成一些更加复杂的图像处理。这一领域的学术研究已经存在了很长时间,但直到 20 世纪 70 年代后期,当计算机的性能提高到足以处理图片这样大规模的数据时&am…

DSP处理器及其体系结构特点(您都用过哪些DSP?)

DSP处理器概述 数字信号处理器(Digital Signal Processor,DSP)是一种专门设计用于执行数字信号处理任务的微处理器类型。与通用微处理器(如CPU)相比,DSP处理器在处理数字信号时具有更高的性能和效率。 用途…

JAVA程序如何打jar和war问题解决

背景: 近期研究一个代码审计工具 需要jar包 jar太多了 可以将jar 打成war包 首先看下程序目录结构 pom.xml文件内容 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"ht…

数据库后门是什么?我们要如何预防它的危害

数据库后门是黑客在数据库中安装的一种特殊程序或代码&#xff0c;可以绕过正常的认证和授权机制&#xff0c;从而获取数据库的敏感信息或者控制整个数据库。黑客可以通过各种方式安装后门&#xff0c;比如利用漏洞、钓鱼、社会工程学等。 数据库后门的危害主要体现在以下几个方…

GPTs应用:创新无限,生态扩容

今天分享的GPTs系列深度研究报告&#xff1a;《GPTs应用&#xff1a;创新无限&#xff0c;生态扩容》。 &#xff08;报告出品方&#xff1a;华泰证券&#xff09; 报告共计&#xff1a;20页 GPTs 发展现状&#xff1a;从 AI 工具到开发平台&#xff0c;掀起全民开发浪潮 11…

YOLOv5独家原创改进:SPPF自研创新 | 可变形大核注意力(D-LKA Attention),大卷积核提升不同特征感受野的注意力机制

💡💡💡本文自研创新改进: 可变形大核注意力(D-LKA Attention)高效结合SPPF进行二次创新,大卷积核提升不同特征感受野的注意力机制。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合p…

Docker三 | 数据卷

目录 Docker数据卷简介 添加数据卷的命令 容器数据卷的继承 Docker数据卷简介 Docker容器产生的数据&#xff0c;如果不备份&#xff0c;当容器实例删除后&#xff0c;容器中的数据也会消失&#xff0c;为了保存数据可以在Docker中使用数据卷。Docker数据卷是宿主机的一个可以…

【LeetCode】2703. 返回传递的参数的长度

返回传递的参数的长度 题目题解 题目 请你编写一个函数 argumentsLength&#xff0c;返回传递给该函数的参数数量。 示例 1&#xff1a; 输入&#xff1a;args [5] 输出&#xff1a;1 解释&#xff1a; argumentsLength(5); // 1只传递了一个值给函数&#xff0c;因此它应返…

搞懂内存函数

引言 本文介绍memcpy的使用和模拟实现、memmove的使用和模拟实现、memcmp使用、memset使用 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言 memcpy memcpy的使用 memcpy的…

PyTorch: 基于VGG16处理MNIST数据集的图像分类任务

引言 在本博客中&#xff0c;小编将向大家介绍如何使用VGG16处理MNIST数据集的图像分类任务。MNIST数据集是一个常用的手写数字分类数据集&#xff0c;包含60,000个训练样本和10,000个测试样本。我们将使用Python编程语言和PyTorch深度学习框架来实现这个任务。 在Conda虚拟环…

鸿蒙开发组件之Image

Image组件加载图片方式有三种&#xff1a; 1、网络地址加载 直接Image(xxxx),添加上图片的网络地址就可以了。注意&#xff1a;真机、模拟题调试需要申请"ohos.permission.INTERNET"权限 Image(https://xxxxxxx) 2、PixelMap格式加载像素图 Image(PixelMapObjec…

根据年份和第几周来获取,那一个周的周天日期

在工作中遇到这个问题&#xff0c;仓库有物料录入&#xff0c;告诉了年份和这个年的第几周&#xff0c;要求把时间转换为XXXX-XX-XX的格式。日期为那个周的最后一天&#xff08;周天&#xff09; 在Java中想要获取特定年份和周数的周天日期&#xff0c;可以使用LocalDate类 pu…

【SpringBoot】响应

controller方法中的return的结果&#xff0c;使用ResponseBody注解&#xff08;方法注解或类注解&#xff09;响应给服务器。 RestController Controller ResponseBody 类上有RestController注解或ResponseBody注解时&#xff1a;表示当前类下所有的方法返回值做为响应数据…

四招打造完美分层自动化测试框架,让测试更高效!

写在前面 我们刚开始做自动化测试&#xff0c;可能写的代码都是基于原生写的代码&#xff0c;看起来特别不美观&#xff0c;而且感觉特别生硬。 来看下面一段代码&#xff1a; 具体表现如下&#xff1a; driver对象在测试类中显示 定位元素的value值在测试类中显示 定位元素…