摘要
Kubernetes 出现后,在云上面出现了一种产品“容器平台”,它打破了既有 IaaS、PaaS 的边界,各种容器平台在商业模式上也略有区别。本文介绍 Kubernetes 容器平台的三种模式,以及华为云、金山云、腾讯云、阿里云的容器平台产品。
Kubernetes 容器平台的三种模式
Kubernetes 时代的容器平台,不能用传统的 IaaS、PaaS 的边界去划分。这是由于 Kubernetes 本身是一个容器编排引擎,它自身由多个部分组成,因此不同的 Kubernetes 交付方式、不同的客户控制域,就形成了不同的商业模式。
Kubernetes 容器平台的三种模式的情况如下所示:
- 模式 1:客户买 IaaS,Kubernetes 作为软件附送;
- 模式 2:托管 Kubernetes,客户可以管 Kubernetes 的 Node、Pod;
- 模式 3:客户通过上层的控制台操作 Kubernetes 的环境;
从客户的角度,几种模式要求的技术并不一样:
- 模式 1:客户自己完全掌控一个 Kubernetes 的运作,云服务提供商只是提供一个软件包;
- 模式 2:Kubernetes 的 Master 节点由云服务提供商管的,客户原则上只管 Node 或者 Pod,相应的可操作内容也受到一定的限制;
- 模式 3:客户不需要了解 Kubernetes,只需要通过控制台做一些简单应用,这种应用大部分是无状态应用;
从云服务提供商的角度,几种模式在计费上面有核心的差别:
- 模式 1:收费就是 IaaS 的原则,云主机为主,客户用到存储、网络的另算,Kubernetes 本身是送的;
- 模式 2:由于 Master 节点在云服务提供商手里面,可为客户提供弹性的增值服务,让客户可以享受一定程度的成本节省;
- 模式 3:由于客户已经看不到 Kubernetes 的运作,因此云服务提供商可能有另外的计费系统,而且可能支持多租户在同一个资源池当中。
三种模式本身也有一些变数,各个云服务提供商所支持的也不相同。
模式 3 的本质发展方向是让客户从底层的云技术中解脱出来,比如可以”不懂 Kubernetes“。这个模式如果在继续向前发展,甚至可以发展成直接向客户提供 Serverless 中的函数引擎。
华为云、金山云、腾讯云、阿里云的 Kubernetes 容器平台
华为云、金山云、腾讯云、阿里云的容器平台有相似性,也有不同的地方。本部分介绍的仅仅是 Kubernetes 容器平台,纯 Docker 的容器平台不是主流,也不在讨论范围之内。
几家云各自的 Kubernetes 容器平台的名字分别是:
- 华为云:云容器引擎(Cloud Container Engine,CCE)
- 金山云:金山云容器引擎(Kingsoft Container Engine,KCE)
- 腾讯云:腾讯云容器服务(Tencent Kubernetes Engine ,TKE)
- 阿里云:阿里容器服务(Alibaba Cloud Container Service for Kubernetes,ACK)
简单概要来说,华为云、金山云主要提供的是模式 1;腾讯云提供的是模式 1、模式 2;阿里云提供的是模式 1、模式 2、模式 3。这里面划分也不是完全泾渭分明,属于大体上面的归类。
华为云容器引擎
(华为)云容器引擎(Cloud Container Engine,简称 CCE)提供高度可扩展的、高性能的企业级 Kubernetes 集群,支持运行 Docker 容器。
什么是云容器引擎_云容器引擎 CCE_产品介绍_华为云
金山云容器引擎
金山云容器引擎(Kingsoft Container Engine,KCE)基于原生的 Kubernetes 进行开发和适配,整合了金山云虚拟化、网络、存储等能力,为客户提供高可靠、高性能、高度可扩展的容器管理服务。支持资源调度、服务发现、灰度升级,弹性伸缩和服务编排等功能特性,方便用户在金山云容器平台轻松部署、运维容器化的应用。
https://docs.ksyun.com/documents/2657
腾讯云容器服务
腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的云硬盘、负载均衡等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。容器服务提供免费使用,涉及的其他云产品另外单独计费。
阿里容器服务
(阿里)容器服务 ACK(Alibaba Cloud Container Service for Kubernetes)提供高性能可伸缩的容器应用管理服务,支持企业级 Kubernetes 容器化应用的生命周期管理。容器服务 ACK 简化集群的搭建和扩容等运维工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
什么是容器服务Kubernetes版 - 容器服务 ACK - 阿里云
几个 Kubernetes 容器平台的特点
几个云上面 Kubernetes 容器平台相似性多于差异,大体符合下面几个原则:
- Kubernetes 与业界兼容,跟随云原生的发展;
- Kubernetes 运行于自家的云服务器之上,作为增值服务;
- 产品优势大同小异,在 Kubernetes 既有技术优势基础上,加上自身云硬件的特性;
- 文档结构很类似:产品介绍、计费模式、使用流程、最佳实践等;
- 除了 Kubernetes 的 API,往往还有自己的 API 负责集群管理等工作
本段的介绍,基本是一个从简单到复杂的过程。
华为云容器引擎 CCE
华为云容器引擎 CCE 的模式非常清晰,这是一个在华为云服务上面运行的东西, 容器引擎本身是一个软件,它真正用的其他云服务则是如右边红框里面所示。
例如,使用 CCE 有一些依赖,华为云弹性云服务器 ECS 是收费的,初次之外还有网络服务、存储服务、配套服务等,用了 CCE 也会用华为云的其他产品。
华为云容器引擎 CCE 的操作过程也比较简单:申请权限、创建集群、创建应用、查看状态。
后面创建应用的工作,则都是 Kubernetes 的基本操作。显然在华为的模式中,客户对于 Kubernetes 集群有着控制权。
在上面操作中,创建 Kubernetes 混合集群、创建基于裸金属集群属于云服务器层面的差别,对于 CCE 的运行有性能影响,而无功能影响。
华为云 CCE 本身不收费,主要靠其他云服务收费。在这种模式中,华为 CCE 也就是一个运行于华为 IaaS 上面的附赠软件。
金山云容器引擎 KCE
金山云容器引擎 KCE 自身的定位是 PaaS,并且运行于金山的 IaaS 之上。
金山云的 CCE 也是按照几个标准的过程创建,创建完成之后,直接可以用 Kubernetes 的标准操作来处理,
金山云 CCE 暂不收取服务本身费用,客户仅需要为使用的云资源付费。显然,金山云的模式也是将 CCE 当成附赠的软件来处理。
腾讯云容器服务 TKE、EKS
腾讯云的容器服务分成两种模式:TKE、EKS,它们之间区别其实也就是客户专用 Kubernetes、托管 Kubernetes 的区别。
下面是腾讯云容器服务的申请过程——这个过程在各家云都是大同小异。
EKS 代表弹性容器服务,按照腾讯云的介绍:弹性集群内运行的工作负载采用后付费的按量计费模式,费用根据实际配置的资源量按使用时间计算。
下面表格是 ETK、EKS 之间的差别。
ETK、EKS 二者的本质差别是计费模式,由于 EKS 实现了弹性和托管,因此客户端控制权上了一些,从 Kubernetes 的功能来说,也少了一些。
下面是 EKS 缺省的 Kubernetes 功能,这其实是对客户的一种限制。
腾讯的 ETK、EKS 两种模式,前者类似于 IaaS 上面送 Kubernetes 软件,后者相当于用 Kubernetes 送给用户弹性服务。
阿里容器服务 ACK
阿里容器服务 ACK 的功能比较全,分成了三种形态:
- 专有版 Kubernetes(Dedicated Kubernetes):需要创建 3 个 Master(高可用)节点及若干 Worker 节点,可对集群基础设施进行更细粒度的控制,需要自行规划、维护、升级服务器集群。
- 托管版 Kubernetes(Managed Kubernetes):只需创建 Worker 节点,Master 节点由容器服务创建并托管。具备简单、低成本、高可用、无需运维管理 Kubernetes 集群 Master 节点的特点,您可以更多关注业务本身。
- 无服务计算 Kubernetes(Serverless Kubernetes):无需创建和管理 Master 节点及 Worker 节点,即可通过控制台或者命令配置容器实例的资源、指定应用容器镜像以及对外服务的方式,直接启动应用程序。
阿里容器服务 ACK 三种模式,其实分别对 IaaS 上面送 Kubernetes、托管 Kubernetes、高度封装 Kubernetes 的模式。
阿里云称之为 Serverless Kubernetes 的内容,其实也并非很明确,Serverless 这个词的内涵和外延很复杂。不过,阿里云的这种模式,的确让用户做的事情比较少。
阿里容器服务 ACK 产品架构图如下所示。
下面是阿里云三种 Kubernetes 的比较,这其实也就是客户的工作从多到少,客户控制权也从多到少。它们最终带来的是收费模式差别。
从客户的角度思考三种模式
在 Kubernetes 容器平台时代,以上提到的三种模式都有应用的场景,在各个云上的支持也属于各有侧重。
从客户的角度来说,三种模式的价值可以总结如下:
- 模式 1:在既有系统上云的过程中,只要让自己的系统成为云原生状态(能在标准 Kubernetes 上面运行),那么运行在自己的机房里面与运行在云上面的效果就是一样的,自己的控制权也是一样的。在很多系统还正在上云的情况下,这种模式价值显然比较大。
- 模式 2:本模式类似托管服务器模式,由于 Kubernetes 的 Master 与弹性权力交由云服务提供商,因此理论上效率更高。这种模式其实也有变数,根据云服务提供商的不同,客户得到的可能是 Node(代表机器)、也可能是 Pod(代表容器)。如果客户不需要对 Kubernetes 有很强的控制权,这种模式可以”省心、省钱“。如果已经是一些无状态服务,其运行仅仅是副本编排调度的问题,那么应用这种模式已经足够。
- 模式 3:客户如果只是需要运行一个很简单的程序,甚至不需要构建完整的 image,这种模式可以提供”模板化“的支持。