谷歌承认Kubernetes太复杂,于是开启了容器界的Autopilot
2021-03-03
来源:雷锋网
试问上手Kubernetes有多难?有时候真得会让你怀疑人生。
过去几年,就连互联网大厂的技术砖家也得细细捋。
“尽管我们过去几年看到越来越多的企业开始拥抱Kubernetes,但是随后就陷入了困境。”
Google Kubernetes Engine(GKE)产品负责人Drew Bradstock在最近的一次公开声明中说道。
Kubernetes就像一把双刃剑,既是最佳的容器编排技术,同时也存在相当高的复杂性和应用的高门槛,这个过程中往往会导致一些常见性错误。
2019年,知名软件开发服务商Atlassian在尝试部署Kubernetes的三年后就发现了这一点:Kubernetes部署起来实在太复杂了。
如今,就连Kubernetes的创立者和核心推动者Google本身都承认这个问题。
为什么Kubernetes这么难
实际上,在国内,Kubernetes直到2017年之后才开始由混乱开始逐渐走向成熟,很大程度上也源自云计算市场本身的企业用户实践大大加快。
一次采访中,阿里巴巴资深技术专家张磊分析了Kubernetes的本质,他指出,
“Kubernetes本身是一个分布式系统而不是一个简单的 SDK 或者编程框架,这本身已经将其复杂度提升到了系统级分布式开源项目的位置。此外,Kubernetes 第一次将声明式 API 的思想在开源基础设施领域普及开来,并以此为基础提出了系列诸如容器设计模式和控制器模型等使用范式,这些具有一定先进性和前瞻性的设计也使得 Kubernetes 项目被大众接受是存在一定学习周期的。”
也就是说,从目前造成Kubernetes复杂性的原因在于两点:一是技术本身的应用难度,二是开发者的接受度,市场的认知和成熟度均有待提高。
鼻祖Google如何不抛弃不放弃
自2015年Google推出其云端托管Kubernetes服务Google Kubernetes Engine(GKE),就一直得到外界关注和使用。在此期间,Google也在不断释出新的版本模型以强化其应用性。
不久前,Google推出一项新功能Autopilot以简化部署和管理Kubernetes配置过程中存在的挑战。
GKE是一个Kubernetes管理平台,主要在谷歌云平台上运行,也可以在Anthos集群管理的其他云平台或本地部署的平台上。
这么来看,目前存在两种操作模式,一是标准的手动控制,二是自动控制Autopilot。Autopilot的基本原理可以解释为:一款GKE完全托管部署的平台,需要运行在谷歌云平台上。尽管GKE本身就是一项托管服务,但与Autopilot的区别在于,后者能够比GKE具备更强的自主化和自动化能力。
Kubernetes本身涉及了集群(一组物理或虚拟服务器)、节点(单个服务器)、pod(代表节点上一个或多个容器的管理单元)和容器等方面。GKE主要对集群进行托管,而Autopilot则将这点扩展至节点和pod。
谷歌承认Kubernetes太复杂,于是开启了容器界的Autopilot
谷歌云通常是一地三个或三个以上机房。如果将所有资源放在单个机房,其弹性将小于将其分散在多个机房中,同时将故障分散到多个机房又可以最大程度提升弹性能力。Autopilot模式始终是按地域划分的,这有利于弹性伸缩能力,不过成本较高。
p.s. 通常云用region和zone两个概念来进行分区,前者主要指地理分区,后者主要指具体机房。
不过,应用Autopilot模式同样存在其限制条件。其中包括操作系统始终基于Google自家容器的Linux“容器优化”,而不是基于Docker,或者基于Windows Server服务器。而且,每个节点的pod最大数量为32,而标准GKE为110。
同时,定价模式上也有所不同。每个Autopilot集群每小时还需要支付1美分的费用。
究竟是Autopilot更贵还是GKE更贵,这种显而易见的问题回答起来却并不简单。“与GKE相比,它还有一个溢价,因为我们得到了站点可靠性工程(Site Reliability Engineering,SRE)和SLA的服务,这就不仅仅只是产品功能了。”
也就是说,由于难以估计计算实例的正确规范,因此未充分GKE标准部署的成本可能会高于Autopilot。
整体来看,新的Autopilot服务为Kubernetes提供了更多选择范畴,可参考成本是否增加、灵活性是否降低、或者给IT运维人员带来的潜在挑战等等。当然,这并不包括对客户支持的满意度这一问题。
值得一提的是,软件工程师Kevin Lin在最近对比了亚马逊和谷歌云服务,指出Google的客户支持基本上没有任何帮助,相比之下亚马逊的技术服务既快又有用。Kevin Lin曾为亚马逊公司任职,他最近描述了自己使用AWS和Google云的经历。
回到一开始雷锋网所探讨的,针对Kubernetes复杂性问题是一直以来困惑很多开发人员的技术问题,伴随Kubernetes已然成为整个云原生社区最主流的开源容器编排技术,在生产环境的采用率越来越高,可以预见其复杂度也会呈线性增长。
你有没有针对复杂性问题的一个最佳实践呢?欢迎你的解决方案。