为什么我会被Kubernetes“洗脑”?云计算

来源:互联网 / 作者:SKY / 2018-03-13 15:00 / 点击:
Kubernetes 已在容器编排之战中取胜,未来很可能会成为“多云”之上的标准层,进而为分布式系统的分发和运行带来根本性的改变,而其自身则会慢慢变得像 Linux Ke

Kubernetes 已在容器编排之战中取胜,未来很可能会成为“多云”之上的标准层,进而为分布式系统的分发和运行带来根本性的改变,而其自身则会慢慢变得像 Linux Kernel 一样,成为一种系统底层的支撑,不再引人注目。

本文金句:

通过 Kubernetes,分布式系统工具将拥有网络效应。每当人们为 Kubernetes 制作出的新的工具,都会让所有其他工具更完善。因此,这进一步巩固了 Kubernetes 的标准地位。

云提供商并非可替换的商品。不同的云提供的服务会变得越来越独特和不同。如果可以访问不同的云提供商提供的不同服务,那么企业将因此受益。

当多节点应用与单节点应用一样可靠时,我们将看到定价模型的变化。

这就是为什么我会被 Kubernetes 洗脑的原因,它是跨越异构系统的一个标准层。

将来,我们会像讨论编译器和操作系统内核一样讨论 Kubernetes。 Kubernetes 将会是低层级的管路系统,而不在普通应用开发人员的视野之内。

Kubernetes 已成为部署分布式应用的标准方式。在不远的将来,任何新成立的互联网公司都将用到 Kubernetes,无论其是否意识到这点。许多旧应用也正在迁移到 Kubernetes。

在 Kubernetes 之前,特定的分布式系统平台还没有一个标准。正如 Linux 是针对单个节点的标准的服务器侧操作系统那样,Kubernetes 已成为编排应用节点的标准方式。

通过 Kubernetes,分布式系统工具将拥有网络效应。每当人们为 Kubernetes 制作出新的工具,都会让所有其他工具更完善。因此,这进一步巩固了 Kubernetes 的标准地位。

谷歌、微软、亚马逊和 IBM 都有自己的 Kubernetes 即服务产品,这让我们在大型云提供商之间切换基础设施变得更加简单。

我们将很有可能看到 Digital Ocean、Heroku 和其他长尾型云提供商开始提供受管理的和托管 Kubernetes 服务。

在这边文章中,我将探讨以下问题:

为什么正在发生这种情况?

对于开发者来说这意味着什么?

云提供商将受到什么影响?

在 Kubernetes 标准化的世界中,有哪些新的业务模型将会出现?

软件标准

标准化的软件平台有利有弊。

标准让开发者可以对软件的运行方式抱有一定的预期。如果一个开发者为某个标准化平台构建了某个产品,他可以评估出该软件的目标市场总规模。

如果你用 JavaScript 写了一个程序,你会知道它将会在所有人的浏览器中运行。如果你给 iOS 创作了一个游戏,你会知道每个有 iPhone 的人都可以下载它。

如果你构建了一个工具来分析 .NET 中的垃圾收集,你会知道大量的 Windows 开发者会遇到内存问题,所以他们会购买你的软件。

标准化的专有平台可以给平台提供者创造大量的利润。1995 年,Windows 这个很好的平台让微软能够以 100 美元的价格售出一个只是纸盒子装着的光盘。

2018 年,iPhone 这个很好的平台让苹果能够从平台所有的应用销售额中拿走 30%。

但是专有的标准会导致分裂。

比如,你的 iPhone 应用无法在 Kindle Fire 上运行。我不能在 Facebook Messenger(脸书信使)上使用你的 Snapchat 增强现实贴纸。

我最喜欢的数字音频工作站[1]只能在 Windows 上使用,所以我不得不使用 Windows 电脑来制作音乐。

当开发者们见到这种分裂时,他们会抱怨。他们会联想到贪婪的资本家,这些资本家为了赚钱,不惜牺牲软件的质量。

开发者们会想:“为什么人们不能和谐共处?”为什么我们不能让所有东西开放和免费?开发者们还会想:“我们不需要专有标准。我们可以拥有开放标准。”

Apache 的增长,Apache 是 LAMP (Linux、 Apache、MySQL 和 PHP)堆栈的一部分,Linux 就曾发生过这样的事。

现在,大多数新的服务侧应用都在使用 Linux。但曾经有一段时间,人们对此有争议。见上图的左侧远端部分。

最近,我们还看到了一个更新的开放标准:Docker。Docker 给了我们一个开放、标准化的打包、部署和分布单个节点的方法。

这极其有价值!但在 Docker 解决的所有大问题之中,有个新的问题非常突出,那就是我们应该如何将这些节点编排到一起?

毕竟,你的应用肯定不只是单个节点。你知道自己希望部署一个 Docker 容器,但是容器应该如何相互通信呢?你如何向上扩展容器实例呢?你如何在容器实例之间路由流量呢?

容器编排

在 Docker 流行之后,一大批开源项目和专有平台纷纷出现,以解决容器编排的问题。

Mesos、Docker Swarm 和 Kubernetes 均提供了不同的抽象来管理容器。Amazon ECS 提供了一个专有的受管的服务,它可以为 AWS 用户提供 Docker 容器的安装和扩展服务。

有些开发者并未采用任何编排平台,而是使用 BASH、Puppet、Chef 和其他工具来为他们的部署编写脚本。

无论一个开发者是否使用编排平台或者脚本来部署容器,Docker 都可以加快开发,并且让开发者和运营之间更加和谐。

随着愈来愈多的开发者使用 Docker 来部署容器,编排平台的重要性日益突出。容器对于分布式系统的重要性就如同对象对于面向对象程序的重要性那样[2]。

所有人都希望使用容器平台,但是众多平台之间存在着竞争,很难看出哪个平台会最终胜出,所以这可能会是持续十多年的竞争,就如 iOS 和安卓的竞争那样。

这样的竞争正在制造分裂。这并不是因为流行的编排框架是专有的(Swarm、Kubernetes 和 Mesos 都是开源的),而是因为每个容器编排社区都已经在自己的系统上投入了太多资金。

所以,从 2013 到 2016 年,Docker 用户一直有种隐忧。选择容器编排框架就像一次豪赌,如果你选择了错误的编排系统,这就好像你开了一家影像店,却选择了高清 DVD,而不是蓝光光碟[3]。

集装箱(container)船倾覆的图片从不过时。

正如在所有战争中那样,总是有一层雾,让我们很难看透彼此。在我报道容器编排之战时,我曾用一条条播客记录我和容器编排专家的谈话,其中,我会问到这样的问题,”那么,哪一个容器编排系统会赢?“

我一直这么做,直到某个我十分景仰之人告诉我问这样的问题一点也没有意思,还不如评估一下不同编排商之间的技术权衡。

回首过去,我后悔自己被不同容器编排商之间的战争的故事所吸引。

当有关容器编排商的辩论如火如荼时,甚至是我这样的记者也被这样的情绪激发,并且认为这将是一场与派系斗争有关的故事时,那些最聪明的人大多数却正在进行着平静和科学的谈论。

容器编排之战并非是一场派系斗争,而更多的是观点和开发者工程学之间的差异。

好吧,或许容器编排之战并不只是观点之间的差异。因为这个领域将会创造大量财富。我们现在谈论的是与数十亿市值的老组织如银行、电信公司和保险公司之间的合同,这些组织正在逐步向云迁移。

如果你正在帮助电信公司迁移到正确的平台,那么你的业务会很好。但如果你拥护了错误的平台,最终你只会得到一仓库的高清 DVD。

阅读延展

1
3