AWS 之于 K8s,如同 Windows 之于 Linux!
【CSDN编者按】就像微软对待Linux一样,AWS选择尽可能地忽略Kubernetes。
同样和微软一样,AWS也被迫“接受并扩展”其竞争对手,以保护其市场份额。两对冤家还有哪些故事?今天的文章将为你揭晓!
作者 | zwischenzugs
译者 | 苏本如
责编 | 胡巍巍
出品 | CSDN(ID:CSDNnews)
过去
如果你像我一样,40多岁,从事IT工作,你可能会记得有一段时间人人都在使用Windows,但也有人(数量不多但持续增长)在业余时间编译Linux。
使用Windows的人很困惑地想:“Windows已经提供了你所需要的一切,而且用起来很容易,为什么你还要用Linux?! ”
这个问题的答案各不相同。有些人喜欢自己能够对系统修修补补,有些人希望操作系统是“免费的”,有些人希望对使用的软件有更多的控制,有些人希望系统运行更快,总之每个人都有自己合适的理由。
现今
当我又一次熬夜想让Kubernetes的一些新插件如文档所描述般工作的时候,我突然想起那些日子里的相同的经历。
几年前的Kubernetes对于缺乏经验的人来说就像一个乱七八糟的恐怖秀,它的API经常变动,如果你试图自己构建的话,你会发现它的文档很糟糕,几乎所有不成熟的大型软件项目所具有的缺陷它都具备。
换句话说,尽管Kubernetes平台的治理水平已经远远领先于大多数开源软件项目,但我当时的感觉和在本世纪初编译Linux,或者解决笔记本电脑崩溃问题的感觉一样(是的,一旦孩子们拔掉USB线缆,就有50%的机会导致笔记本电脑系统崩溃,这样的事情过去确实发生过)。
这种混乱的局面已有改观,而且它的变化速度已经降到了可以接受较低的水平。但是有充裕资金支持的新技术每隔几个月还是会出现,即使是那些愿意跟上生态系统变化的人也会感到困惑。这点很难向其他人解释。
以Knative平台为例:
Knative俱乐部的第一条规则是你不能解释什么是Knative。
——Ivan Pedrazas(@ipedrazas)于2019年3月18日
https://zwischenzugs.com/2019/03/25/aws-vs-k8s-is-the-new-windows-vs-linux/
所以使用AWS的同事看到我经常在Kubernetes上面忙得满头大汗时,会问同样的问题:“AWS已经能提供你所需要的一切,得到每个人的支持和使用,而且它用起来很容易,你为什么要做这些?”
AWS =Windows
AWS就像Windows,它是一种产品。它不灵活,但很可靠。
它的API定义良好,对于大多数的实际工作负载,它的KPI表现良好。
它对各种资源都可以做出限制,这有助于帮助你决定什么可以做和什么不可以做。
大多数人都希望这样。他们想要一辆可以行驶的,但是不需要经常修理的汽车。也有些人喜欢维护汽车。
有些公司会保留机修工人来维护一个车队,因为从规模效应上看它的性价比更高。同样地,一些大企业的规模足够大,以至于重新建立自己的数据中心可以给它们带给更大的好处。比如Facebook和Dropbox(我们后面再讨论这一点)。
像过去的微软(或者现在的谷歌)的做法一样,AWS平台不断增加和扩展新功能,所有他们认为是有利可图的产品,都被放到这个平台上。
AWS和Kubernetes
AWS与Kubernetes现在到底是什么关系?相信AWS也不明白这一点。AWS已经有了ECS,这是一个丑陋的庞大的混蛋产品,如果你一开始就大量购买了AWS,你应该很容易理解我的意思。
你可能会说AWS的EKS可以支持Kubernetes。是的,它确实支持。
我最近没有关注它,EKS花了很长时间才面世,而且现有也没有太多的功能。
感觉就像一个云框架(AWS)与另一个(K8s)结合了,而真正的处在困难成长期的(K8s)就没有人关注了。
这导致在EKS下部署Kubernetes“耗时太长”的问题一直没有得到解决。看看下面的投诉:
终于我有机会在AWS的EKS兜兜风了。虽然我肯定对它有偏见,但我确定它不能满足我对Kubernetes管理平台的期望。
在我通过单独的工作流创建节点时,我等了10分钟还没有看到控制界面出现。
——Kelsey Hightower (@kelseyhightower) 于2019年1月30日
https://zwischenzugs.com/2019/03/25/aws-vs-k8s-is-the-new-windows-vs-linux/
就像微软对待Linux一样,AWS选择尽可能地忽略Kubernetes。同样和微软一样,AWS也被迫“接受并扩展”其竞争对手,以保护其市场份额。
我曾经和AWS的人开会,他们对我们为什么在有ECS可用的情况下,还使用EKS表示困惑。
EKS和锁定(Lock-in)
这让我们想到了AWS之所以能够提供EKS,从而“拥抱”Kubernetes的一个重要原因:IAM。
EKS(像所有的AWS服务一样)与AWS IAM紧密集成。正如大多数人所知,IAM是AWS Lock-in的真正来源(而Lambda是出类拔萃的锁定技术,如果你什么都看不到,你就无法移动服务器)。
改变你的身份管理几乎是任何组织最不想做的事情。因为让你的首席技术官(CTO)在短期收益为负的情况下,冒着很大风险,对核心安全系统做大刀阔斧地改变,对他的职业提升并无帮助。
同样地,这也解释了为什么Linux永远不会威胁到Windows,至少在台式机上是这样。
但随着手机和Mac电脑的出现,Windows已降为消费计算市场上的第二大操作系统。这一点从他们在过去10年里没能成功地强迫大家使用它的把浏览器可以看出。
因此,市场只需一些意想不到的转变,就可以获得动力来杀死那些山大王。
微软和AWS都深谙这个道理。这就是为什么微软和AWS一直不断地为他们的产品添加新的产品和功能,这也是为什么EKS必须出现的原因。
微软最终把他们的邮轮转向了云计算,在开源、Linux和Docker以及所有能吸引IT部门使用它们提供的服务的东西上大做文章。
哦,你可以使用和你公司网络相同的目录服务,并把你的微软Windows许可转移到云上。微软不再关心操作系统了,因为它第一个免费了。
也没有其它公司会关注操作系统了,包括Redhat这个因为支持Windows操作系统的竞争对手而成立的公司也不会。
操作系统已死,它能提供的剩余价值越来越少。
Kubernetes会强迫AWS将邮轮驶向Kubernetes吗?
我们能期望看到他们“拥抱”Istio 和 Knative,以及在未来出现的任何框架吗(我不能依靠他们博客中的How-to指南来得到答案)?
AWS的竞争对手
我不是很清楚这点。但可能会有,这里我给出一些理由来说明。
和Windows操作系统鼎盛时期的微软一样,AWS也只有一个竞争对手:私有数据中心。
和微软当时的竞争对手(Linux)一样,采用其竞争对手的产品是痛苦的、昂贵的,而且风险很大。
但私人数据中心的操作系统是什么?在Kubernetes之前,答案应该是OpenStack。
OpenStack被广泛地认为是一种失败产品,但以我的经验,它在大公司中依然存活。
我不是OpenStack专家,但据我所知,OpenStack作为一个商用操作系统,在它需要运行的所有基础设施上,不能解决所有需要解决的问题而成为一个稳定的产品。
而微软当年统治天下前是这样做的:你可以在“任何”个人电脑和“任何”硬件上运行它,它就可以“正常工作”。
苹果则通过限制和控制硬件(并在这一过程中获得可观的利润)来解决这一问题。Linux也通过它的社区支持,让它能够支持的使用场景足够多,最终解决了这一问题。
但是OpenStack没有做到这一步,它尝试的太多了,OpenStack嵌入了太多东西,结果变成了那些不想与云服务提供商绑定的公司用来安装Kubernetes的默认底层操作系统。
有趣的是,AWS提出的私有云失败的原因对他们自己来说也是一样的:企业无法正确管理弹性需求,无论是在他们自己的数据中心,还是在他们付钱给别人的时候。
企业的管理和财务控制治理结构不会一夜之间改变以适应敏捷的供应模型(顺便插一句,如果你想改造一个企业的IT系统,从财务系统开始。如果你能在财务系统打开口子,你就有机会在安全和控制系统上获得成功。如果你不知道为什么以财务系统作为切入点很重要,你肯定会失败的)。
但企业还有其他不全部押宝AWS的理由:例如锁定(见上文)和规模经济的考虑。这点可以参考Dropbox从AWS迁移回他们自己的数据中心的理由。
我对云平台的体验和这有点相似。
就我个人而言,我发现尽管云存储有明显的好处,但是以我自己的数据量来比较,它的成本并不是很便宜(是的,即使我把自己的劳动力成本和冗余需求也考虑进去)。为什么会这样?好吧,有几个原因:
- 我的专业知识和能力可以设计出一个不需要太多劳动力成本的解决方案。
- 传统的旋转硬盘的折旧率非常低(尤其是购买数量比较多时),而且访问速度很高。
- 我需要存储的数据太多,导致云存储成本直线上升,到了让我觉得昂贵的水平。
以上三点(专业知识、资产价值和数据规模的经济性)是大型企业做出同样决定的一些原因。下面这个不准确的图表,展示了Kubernetes的回报和企业规模的关系:
图中的红线代表运行Kubernetes的成本
运行Kubernetes的零日成本非常高(左边的红线),但随着服务规模的扩大,它的回报呈现指数级别地增长。
这就是为什么AWS赚得盆满钵满的原因:这个非线性的增长曲线告诉我们,AWS从用户这里获得的利益远远超出它的成本,但是AWS不会向你揭示这一点。
说白了:如果你变得足够大,那么AWS就会开始欺骗你,但你可能不在乎,因为你的业务正在扩大。
你就像一只沸水里的青蛙。等你意识到自己的处境的时候,那就太晚了。那时候再离开AWS将会非常困难。
万一贝索斯失去理智怎么办?
只有当获得了大企业支持的时候,Linux才真正开始运行起来。同样地,Kubernetes从一开始就从谷歌和Redhat这两个大公司获得了大量资金。
只有当企业认真对待AWS的垄断问题时,情况才会有真正的改观。
有些人必须认真对待,因为万一贝索斯失去了理智,或者亚马逊被俄罗斯间谍包围,那么就必须在合理的时间内制定计划,以达到监管要求。
另外的原因是不同的云服务提供商有不同的优势,随着时间的推移,大型企业更有可能选择多个服务提供商。
如果有足够多的企业这样做,那么AWS就没有什么办法来维持它的垄断地位。
对于微软来说,如果你想要用它的软件,除了付钱之外别无选择,但是对于Linux来说,你不必真正地把自己锁定在一个提供商身上。
我见过大型企业在谈判过程中为了和Redhat较劲,投入巨资调研使用CentOS的可行性。
在Linux上发生的事情,同样在Kubernetes上发生。Kubernetes采用了和Linux相同的“distro”发行模式,在这种模式中,一个精选的版本被创建出来以方便增加各种“风味特色”。
最初的那个版本是Redhat的OpenShift,后来改名为“OKD”(我猜是OpenShift Kubernetes Distribution的缩写)。
有些企业希望有一个大型的垄断服务商来运营Kubernetes,并愿意为此支付服务费用,但是和Linux一样,人们总是可以选择内部支持或者不同的服务提供商,因为Kubernetes核心系统不属于任何人。
将来
未来的Kubernetes将会足够大,足够独立,能够独立生存。
OpenShift成功地避免了被指责为Kubernetes的复刻版。不管法律上的争议是什么,Redhat的声明并非虚伪。
他们不仅知道可以从开源基础设施之上赚钱,而且还知道从它的成功中获益。他们不需要复刻Kubernetes。
但有趣的是,他们确实复刻了Dockers,甚至在OCI 复刻版出现之前就这样做了,并且他们这样做还有充分的理由,因为那时Docker做的一些决定明显是为了自己的生存(例如,以保持“一致性”的理由,而使用Docker自己的hard-coded的默认注册表)。
但是Kubernetes没有这样的问题。我还没有听说过任何一个供应商以牺牲其他人的利益为代价,把自己的代码强行推到别人的代码库中。
我(和其他人)担心的是:
云原生计算基金会全景图谱:测试很快开始…
和Linux一样,各种成熟度和社区接受度状态下的“UserLAnd”中也有一系列令人困惑的技术,其中大部分可能在几年后就过时了。
我几乎记不清日志中各种工具的作用,更不用说像个架构师那样搞清楚所有功能了。
如果我用的是AWS,我会看着这张图想:真让人头疼啊,我该选择哪一个!就像你在决定使用Linux桌面时,你可以试着先搞清楚哪个发行版最合适,或者考虑全部多达45种不同的选项。
结论
我在本文想表达的原意是,AWS之于Kubernetes,就像Windows之于 Linux。如果确实如此,那么业界最好加速推进Kubernetes的“distro”发行模式,以避免重蹈OpenStack的覆辙。
或者可以换一个说法:数据中心的Debian和Ubuntu在哪里?
原文:https://zwischenzugs.com/2019/03/25/aws-vs-k8s-is-the-new-windows-vs-linux/,本文为CSDN翻译,转载请注明来源出处。