Kubernetes及其竞品调研分析

一、工程选题概述

  • 本项目主要基于Kubernetes集群开展,针对开源项目进行功能扩展。要求基于已有的Kubernetes集群和Prometheus 监控系统进行扩展开发。
  • 本项目是一项工程类选题,主要的产品成果为K8s。该应用是一个开源的,用于管理云平台中多个主机上的容器化的应用。作为一款开源的相当优秀的容器管理应用,虽然目前并不是唯一的编排平台,但以其统治性和如今的发展势头,本人认为对其做常规的互联网应用竞品分析是不够的。故本文除进行简要的竞品分析,主要还会针对k8s现状,容器生态圈进行调研分析。

二、K8s及其竞品产品占有现状

图片及调查结果来源于CNCF2017年秋季的调查

  • 调查数据:在该调查中,几乎所有受访者(97%)正在以某种方式使用容器,其中61%正在生产中使用容器。总的来说,69%的受访者表示他们正在使用K8s来管理容器。然而,K8s不是唯一的编排方法。有近2/3的K8s用户仍然利用其它的方法来管理容器。同时在主要使用其他编排平台的用户也会兼用K8s,比如Google Container Engine中也有85%的用户使用K8s。
  • 调查结果:在过去三年中,该调查展示了Kubernetes已经广泛领先了竞争产品。在更高的层面上,Kubernetes赢得了容器编排战争的第一战。竞争产品如Docker和Mesosphere,现在他们都在促进自己的产品与Kubernetes的相互操作。其他如AWS,谷歌,微软等主要的云厂商也紧跟,提供管理Kubernetes环境的服务。
  • 个人观点:如今,Kubernetes是规模化管理容器的首选,但并不是说会能一直保持住其霸主地位。从实验阶段到管理生产到工作负载,K8s部署在过去几年中确实进步了很多。然而大部分K8s的部署仍然还不成熟且轻量。K8s在IT生态系统中的中心位置并没有得到有效的保证。在云服务如此流行的当下,K8s已经抢占了先机。但由于产业链的未成熟,一起皆有可能。K8s的广泛使用迫使它加速成熟并且使技术社区迅速革新。随着新的和更多的厂商在云原生空间竞争,它会使得市场更为分裂。

三、K8s产品特点

  • 为什么选择K8s
    对于docker来说,他有自家的一款与K8s类似的产品docker swarm。由于docker的普及,选择docker swarm启动容器编排似乎是件很自然的事。但K8s由于其较低的学习成本以及更强大的社区从而抢占了市场。作为开源产品其首要目标当然不会是为了赚取用户的现金。同时由于其开源社区的存在,能很方便的下载、更新bug。
  • K8s发展历程
    K8s的出现其实要早于docker。但是也不必感到矛盾,毕竟自20世纪70年代以来,容器平台一直存在,他们的开发可以追溯到Unix中的chroot系统调用。Docker在2013年左右出现在容器领域,并立即取得了成功。而K8s的发展独立于Docker。2003年左右,谷歌创建了Borg系统来应对日益增长的集群管理问题。这是一个内部工具。2014年年中,Google推出K8s作为Borg系统的开源版本。不久,微软,红帽,IBM和Docker加入,以支持K8s社区。目前看来,主要的市场趋势正在将K8s作为一个容器编排解决方案。
  • 个人使用分享
    本人在研一工程时在实验室导师及师兄的带领下开始接触容器及K8s,目前还未精通,但是会持续使用该应用。不能说十年后、或者二十年后K8s还在不在,但我相信该类型的应用必将存在。毕竟微服务➕云计算是未来企业发展的趋势,而基于此的容器编排管理平台就至关重要了,能有效提升工作人员的效率。

四、K8s仍存在的问题

作为基础设施领域的系统软件,工作层级太低是目前 K8s 在更多场景中落地的主要技术障碍。

这就好比在 Google 内部,我们所熟知的基础软件如 MapReduce,GFS,Dapper, BigTable,Spanner 等都依赖于 Borg 的存在。K8s 的工作层次使得它在落地的过程中表现出来的侵入性非常强。很难去真正接管用户的全套基础设施体系来发挥出它的“容器化“能力。

另一方面,很多团队(包括很多技术能力很强的团队)在落地 K8s 项目的过程中也存在一些误区,比如依然试图按照“试点测试”、“定制开发”、“内部推广”的思路来在运作这个开源项目。而实际上,K8s 项目的核心乃在于它鼓励的并不是单纯的“用”,而是深入的“玩”。它是在从代码层面保证参与者成为整个生态的一部分,这跟之前大部分基础设施开源项目的设计都是不太一样。

这也意味着,只有能“玩”好 K8s,才能真正保证团队在这次容器技术的浪潮中站稳脚跟。事实上,无论 Microsoft、RedHat、CoreOS,还是 Google,都不是 K8s 的典型用户,但这并不妨碍他们成为这个领域数一数二的“玩家”。这其中的微妙差异,正体现了所谓的基础设施项目的“民主化”设计思路。

至于其他的功能或者性能问题,以目前 K8s 生态的体量来说,基本上不存在非常困难的状况。但是如何能够鼓励用户以“白盒”化的方式去“玩好”K8s 项目,改变目前用户落地 K8s 项目的思路,则是一个非常值得深入探讨的话题。

参考:Kubernetes 社区成员张磊的《Kubernetes 项目与“基础设施民主化”的探索》