不使用 Kubernetes 发行版的5个理由

没什么想法但 发布于 07/10 15:37
阅读 6K+
收藏 17

目前有不少公司基于 Kubernetes 封装了自己的商用 Kubernetes 发行版,丰富了开发生态,也提供给开发者更多选择。

最近有人提出,选择发行版总体上需要更少的精力和专业知识,但因为种种理由,组织机构其实应该考虑使用原生 Kubernetes。

为了帮助大家理解,先介绍一下文中的一个名词“Vanilla Kubernetes”,Vanilla Kubernetes 指纯净、原生的 Kubernetes,一般还有 Vanilla JavaScript / Vanilla Linux 等用法,指原生 JavaScript 或 Linux,而不是它们的方言版或发行版本。

作者:Christopher Tozzi

原文:5 Reasons Not to Use Kubernetes Distributions》

Kubernetes 发行版可能无法像组织机构认为的那样,可以为他们节省时间和金钱。

部署 Kubernetes 有两种主要方法。一种是在数十种软件公司开发的 Kubernetes 发行版中选一个;另一种是通过 Kubernetes 官方源代码,自行安装 Vanilla Kubernetes,即原生 Kubernetes。

传统观点认为,很多时候,使用原生 Kubernetes 不是个好主意。大多数人会说,除非你是 Kubernertse 的开发人员、并想使用核心代码,否则最好使用发行版,发行版提供完整的安装和部署服务。这在过去可能是个很好的建议,但现在我们有了更充分的理由使用原生 Kubernetes,而不是发行版。

什么是原生 Kubernetes?

原生 Kubernetes 指的是 Kubernetes 的原生未修改版本,提供源代码下载。

之所以称为原生版,是因为在软件界有一个长达几十年的传统,即打上“Vanilla”原生标签的软件被部署到任何应用程序或平台上时,表示这是没有修改过的官方版本。类似于,我们还会听到“原生 Linux” ,这是指使用纯粹的、官方的 Linux 内核源代码构建 Linux 内核,而不像在 Linux 发行版本中,会修改 Linux 内核程序。

与原生 Kubernetes 相对的是 Kubernetes 发行版,例如 Rancher,Red Hat OpenShift;或基于云的 Kubernetes 服务,例如 Amazon EKS。这些发行版采用了核心的开源 Kubernets 代码,并将其集成到更广泛的平台中,而这些平台通常包含不属于 Kubernetes 本身的管理、监视和安全工具。这些平台中的很多还提供安装程序,简化 Kubernetes 安装程序。

当 Kubernetes 发行版没有意义时

Kubernetes 发行版肯定是有优势的,这里只是想推翻一个传统观点:在95%的使用场景中,发行版 Kubernetes 比原生 Kubernetes 更合适。

下面是5个原生版比发行版更适合的原因:

1. Kubernetes 不是 Linux,复杂程度相对较低

对于初学者来说,许多关于原生 Kubernetes 的争议是:它是一个复杂平台,从头开始安装和构建太难了。

实际上,Linux 比 Kubernetes 复杂得多。要从头构建一个可用的,基于 Linux 的操作系统,必须构建和安装数十个,甚至数百个单个组件。

而 Kubernetes 包含大约十二个组件,其中有一些是可选的,你可以在每天的空闲时间,一天安装一次。但对于 Linux 发行版中的所有实用程序和应用程序,情况并非如此。

还有选择 Linux 发行版的部分原因是,发行版通过软件包管理器,更容易使软件保持最新状态。同样,Kubernetes 发行版相较原生版,一个优势也是更新更轻松,但因为 Kubernetes 中需要更新的组件少了很多,这个优势就没那么明显了。

2. Kubernetes 发行版会锁定生态系统

如果使用 Kubernetes 发行版,会陷入该发行版周围的生态系统中。

虽然有时候使用 Kubernetes 发行版也可以在部署过程中使用第三方开源软件,而且大多数 Kubernetes 发行版的部分组件本身也是开源的。

但是,大多数情况下,发行版比原生版更容易导致对某些核心工具或是依赖项的依赖。例如,如果使用 OpenShift,则会受到各种组件的束缚。如果你运行基于 AWS EK 或 Azure AKS 的基于云的 Kubernetes 发行版,那么你将陷入该云提供商的生态系统之内。

如果安装了原生 Kubernetes,则将有更多自由选择要构建部署所需组件。

3. 使用 Kubernetes 发行版是有代价的

成本因素也值得考虑。大多数 Kubernetes 发行版都是由商业公司开发的,要花钱才能大规模运行,虽然有些确实会为小型的部署提供免费套餐。

当然,原生 Kubernetes 也要付出一定的金钱成本。源代码可能是免费的,但是你的工程师需要花时间去管理维护。长期以来,这种说法一直被当成是使用发行版 Kubernetes 的理由。

但是,当谈到 Kubernetes 时,我不确定,原生 Kubernetes 的人力维护成本,是否一定高于发行版的人力成本。因为无论如何部署,即便是使用发行版,你也需要向工程师支付大量资金来维护和监视部署效果。

另外,鉴于上文提到的,Kubernetes 大约只有十二个组件,因此安装和设置并不会浪费团队太多时间。从这个意义上说,简化安装过程的发行版,并不会降低多少成本。

4. Kubernetes 发行版可能会死亡

Kubernetes 仍然是一个非常年轻的平台。当今可用的大多数主流 Kubernetes 发行版仅存在了几年,一些发行版,如 OpenShift 最初甚至不是围绕 Kubernetes 所构建的平台。

一些 Kubernetes  发行版,如 Kontena Pharos 已经失败了。诸如 Kublr 和 Rancher 之类的其他几家公司则由成立5-10年的创业公司维护。甚至大型企业,如 IBM 的发行版(指 Red Hat OpenShift)或 AWS 的发行版也可能在不知不觉中被杀死。

可以肯定地说,开源 Kubernetes 项目将持续很长时间,而使用发型版则大概率会面临该版本消失,或被迫迁移到新发行版的风险。

5. 原生 Kubernetes 变得更容易安装和维护

最后,Kubernetes 已经走了很长一段路,用户友好度也在提升。

像大多数开源项目一样,Kubernetes 在初期非常粗糙,它犯过一长串的错误,没有完全文档化、集成常常只完成了一半的工作。因此,许多团队选择发行版来规避问题。

但是今天,这些错误都已或多或少被修复了,Kubernetes 的文档在组织、导航和清晰度方面堪称典范。

结论

可以肯定的是,有许多理由支撑组织机构选择发行版,发行版总体上需要更少的精力和专业知识。但发行版也有不足,如需要更高的成本、更少的灵活性、以及长期可用性的保证。

在开始安装 Kubernetes 发行版之前,请记住,Kubernetes 不是 Linux,记得考虑给原生 Kubernetes 一个机会。

加载中
1
Kit_lee
Kit_lee

选择原生的确需要勇气

0
哒不溜滴滴
哒不溜滴滴

不使用发行版怕是还没熟悉就像放弃

0
c
crystalsis

这个发行版是指软件仓库里的么?

0
象牙山赵国强先生
象牙山赵国强先生

一直都是官方二进制装,ansible一把梭

0
小杨阿哥哥
小杨阿哥哥

开源项目没有足够的资金支持,很容易断供,BUG 没人修

0
h
huangzz123

那是不是建议linux也是用原生的为好?我当下没几家公司会用吧。我觉得K8s的发展也应当是这样,原生只是作为爱好者或者有特殊要求的群体,大部分群体都会逐渐使用发行版,以后发行版就是个入门和学习的台阶。怕发行版断供?小众的或许如此,那是选择的问题。捆绑的问题也是不存在的,RedHat和Ubuntu或许使用方式和习惯不一样,但基础都是相通的。对于发行版,我觉得要抱着欢迎和支持的态度,毕竟这是普及技术的重要手段,如果没有Ubuntu和Centos之类的发行版,linux的普及率绝不会像如今这么高。

返回顶部
顶部