1.3 企业级容器云技术选型

关于技术选型,有很多复杂的影响因素。一个企业在应用新技术前,需要考虑IT部门自身的技术能力、开发能力、运维能力,以及组织结构、管理模式等各种非技术因素,还需要考虑自身的业务系统在开发平台及开发规范等方面是否有决策和控制的能力。

Kubernetes、Mesos和Docker Swarm(简称Swarm)都是行业内开源的比较火热的容器资源编排解决方案,但它们各有千秋。在应用的发布环节方面,Swarm的功能、Kubernetes的编排和Mesos的调度管理很难决出高下。如果我们结合企业级业务应用场景来辅助容器技术的选型,则会更有意义。

场景一:企业规模不是很大,应用不是太复杂

在这种简单场景下,Swarm是比较好用的,能和Docker很好地结合在一起,并且能和Docker Compose很好地一起工作,因此非常适合对其他调度器不太了解的开发者。

场景二:企业规模较大,应用较复杂,有多种应用框架

在集群规模和节点较多,且拥有多个工作任务(Hadoop、Spark、Kafka等)时,使用Swarm就显得力不从心了,这时可以使用Mesos和Marathon。Mesos是一个非常优秀的调度器,强调的是资源混用的能力,它引入了模块化架构,双层调度机制可以使集群的规模大很多。Mesos Master的资源管理器为不同的应用框架提供底层资源,同时保持各应用框架的底层资源相互隔离。它的优势是在相同的基础设施上使用不同的工作负载,通过传统的应用程序Java、无状态服务、批处理作业、实时分析任务等,提高利用率并节约成本。这种方法允许每个工作负载都有自己专用的应用程序调度器,并了解其对部署、缩放和升级的具体操作需求。

场景三:企业规模大,业务复杂,应用粒度划分更细

在这种场景下,采用Kubernetes就更适合了,其核心优势是为应用程序开发人员提供了强大的工具来编排无状态的Docker容器,而不必与底层基础设施交互,并在跨云环境下为应用程序提供了标准的部署接口和模板。Kubernetes提供了强大的自动化机制和微服务管理机制,可以使后期的系统运维难度和运维成本大幅度降低。Kubernetes模块的划分更细、更多,比Marathon和Mesos的功能更丰富,而且模块之间完全松耦合,可以非常方便地进行定制。并且,Kubernetes社区非常活跃,能让使用Kubernetes的公司或人员很快得到帮助,方便解决问题和弥补缺陷。

根据以上场景分析,如果企业的主要目标是通过搭建PaaS平台管理容器集群来为业务服务,则采用Kubernetes比较合适。如果企业的主要目标是实现DCOS(Data Center Operating System,数据中心操作系统)平台,则采用Mesos是个不错的选择。结合目前大多数客户的实际需求,本书选择以Kubernetes+Docker为基础来搭建企业级容器云PaaS平台,支撑基于微服务架构开发的应用程序,实现对大规模容器集群的有效管理。

以上技术方案在核心特点、量级、复杂性、稳定性、扩展性、二次开发工作量等方面的比较如表1-4所示。

表1-4

img

续表

img

Kubernetes集群管理技术已经过Google十多年的生产验证,成熟度高,支持裸机、VM等混合部署,适合多种应用场景,可以用快速、简单、轻量级的方式来解决企业在IT建设中存在的问题,并帮助其进行面向集群的开发。

根据云原生计算基金会(Cloud Native Computing Foundation,CNCF)最近发布的一项调查,超过75%的受访者将Kubernetes应用于实际生产环境中。目前,众多大型全球性机构正在大规模使用Kuberentes从事生产活动。近期公布的实际应用案例如下。

◎ 全球最大的电信设备制造商之一的华为公司将其内部IT部门的应用迁移至Kubernetes上运行,使得其分布在全球各地的IT系统的部署周期从原本的一周缩短到数分钟,应用交付效率提高了数十倍。

◎ 全球五大在线旅行社及酒店集团之一的锦江之星旅游公司利用Kubernetes将其软件发布时间由数小时缩短至数分钟,并利用Kubernetes提高在线工作负载的可扩展性与可用性。

◎ 来自德国的媒体与软件企业Haufe Group利用Kubernetes将新版本的发布时间从原先的数天减少到半小时以内。此外,还能在夜间将应用容量缩减一半,从而节约30%的硬件成本。

◎ 全球最大资产管理企业BlackRock利用Kubernetes实现了运营效率的提升,并在100天内完成了一款面向投资者的Web应用程序的开发与交付。