当前位置: 首页 > 科技观察

复杂性会压倒Kubernetes吗?

时间:2023-03-15 08:57:53 科技观察

Kubernetes肯定不会是第一个受限于规模的开源项目,但是专家们却众说纷纭……Hadoop因为使用不友好,终于耗尽了能量。正如CapitalOne的BernardGolden所说,Kubernetes“易于操作”并且正在取得长足进步。与这种外交辞令形成鲜明对比的是,一些人认为Kubernetes患上了痔疮。Kubernetes会步Hadoop的后尘吗?可能不会。与越来越难用的Hadoop相比,Kubernetes变得更易用了。虽然Kubernetes使用起来并不简单,但它的复杂性与Hadoop有着根本的区别。Hadoop不兼容的复杂性首先看一下Hadoop。当MapReduce的概念出现时,ApacheHadoop很复杂。随着更多功能的添加和改进,复杂性不可避免。正如TomBarber所说,“Hadoop的本质是什么?MapReduce被Spark取代,被其他功能取代,等等。”,尽管它仍然很笨重。为什么体积大?VMware的JaredRosoff认为:“Hadoop的复杂性来自于它的基础架构由太多不相关的复杂系统进行通信,每个系统都有不同的生命周期和管理模型。”Flume、Chukwa、Hive、Pig、ZooKeeper等等,听起来都很聪明,但是把它们整合在一起简直就是一场噩梦。Hadoop其实是一个复杂的解决方案栈,它的复杂性来自于用户。Kubernetes的不同之处在于其扩展Hadoop的方式。正如Rosoff所说,“Hadoop没有考虑人们将如何扩展系统,从而创建了一个与扩展完全不兼容的生态系统。”相比之下,“Kubernetes选择了一种完全不同的扩展方式。Operators,CRI/CSI/CNI,确保在添加更多组件时,性能会更流畅。”也就是说,不像Hadoop不兼容扩展,“Kubernetes在扩展的时候还是一个整体”。Kubernetes值得信赖的复杂性并不意味着Kubernetes很简单。Kubernetes的创始人Heptio的JoeBeda表示“Kubernetes是一个复杂的系统”,但这种复杂性是必要的,因为“Kubernetes做了很多抽象”。每个人都需要这种抽象吗?不,“大多数人更喜欢简单的功能”。但对于需要使用Kubernetes的用户,Beda强调,与熟悉的“旧的兼容性复杂性”相比,他们需要一种新的复杂性系统。作为工程师,我们宁愿体验我们产生的复杂性,也不愿去学习它。随着开发工作采用Jenkins、Bash、Puppet/Chef/Salt/Ansible、AWS、Terraform等,我们创建了独特但熟悉的内置复杂性,因此不会让人感觉复杂。那时,新人很难加入这种系统。他们可能熟悉工具,但不熟悉系统的独特性。这就是Kubernetes的价值所在。Kubernetes提供了一系列的抽象层来解决问题。虽然需要一些学习,但这种模式会大大提高生产力,并且可以在不同的项目和开发环境之间切换。知道了?与一些锁定开发系统环境的复杂性不同,Kubernetes复杂性的好处是它不依赖于特定的开发环境。因此,通过Kubernetes获得的知识是可以迁移的。换句话说,“一次学习,终身受益”。学习一次,终生受益Kubernetes的学习过程也比Hadoop更容易,GarethRushgrove说,“Kubernetes可以轻松地在本地运行,并且与其他复杂系统相比,操作门槛降低非常重要”。此外,正如CNCF基金会的ChrisAniszczyk所说,“分布式系统本质上是复杂的,而Kubernetes帮助云提供商提供按需扩展的实现。”尽管如此,我们应该问这样一个问题:“Kubernetes相对于它要解决的问题来说是否复杂?”,答案应该是“否”。那么“Kubernetes会追随Hadoop的脚步吗?”的答案是相同。Kubernetes经历了一段艰难时期。虽然Kubernetes编排工具很复杂,并不适用于所有场景,但所有工具都需要学习、使用和理解。几个小时是不够的,因为这个工具是用来解决复杂问题的。复杂性分为两种:可控的和偶然的。Hadoop属于后者,而Kubernetes属于前者。因此,Kubernetes仍将是容器编排领域的行业标准。