摘要

Kubernetes 出现后,在云上面出现了一种产品“容器平台”,它打破了既有 IaaS、PaaS 的边界,各种容器平台在商业模式上也略有区别。本文介绍 Kubernetes 容器平台的三种模式,以及华为云、金山云、腾讯云、阿里云的容器平台产品。

Kubernetes 容器平台的三种模式

Kubernetes 时代的容器平台,不能用传统的 IaaS、PaaS 的边界去划分。这是由于 Kubernetes 本身是一个容器编排引擎,它自身由多个部分组成,因此不同的 Kubernetes 交付方式、不同的客户控制域,就形成了不同的商业模式。

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 容器。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_kubernetes_02

​什么是云容器引擎_云容器引擎 CCE_产品介绍_华为云​

金山云容器引擎

金山云容器引擎(Kingsoft Container Engine,KCE)基于原生的 Kubernetes 进行开发和适配,整合了金山云虚拟化、网络、存储等能力,为客户提供高可靠、高性能、高度可扩展的容器管理服务。支持资源调度、服务发现、灰度升级,弹性伸缩和服务编排等功能特性,方便用户在金山云容器平台轻松部署、运维容器化的应用。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_03

​https://docs.ksyun.com/documents/2657​

腾讯云容器服务

腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的云硬盘、负载均衡等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。容器服务提供免费使用,涉及的其他云产品另外单独计费。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_kubernetes_04

​容器服务 - 文档中心 - 腾讯云​

阿里容器服务

(阿里)容器服务 ACK(Alibaba Cloud Container Service for Kubernetes)提供高性能可伸缩的容器应用管理服务,支持企业级 Kubernetes 容器化应用的生命周期管理。容器服务 ACK 简化集群的搭建和扩容等运维工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_05

​什么是容器服务Kubernetes版 - 容器服务 ACK - 阿里云​

几个 Kubernetes 容器平台的特点

几个云上面 Kubernetes 容器平台相似性多于差异,大体符合下面几个原则:

  • Kubernetes 与业界兼容,跟随云原生的发展;
  • Kubernetes 运行于自家的云服务器之上,作为增值服务;
  • 产品优势大同小异,在 Kubernetes 既有技术优势基础上,加上自身云硬件的特性;
  • 文档结构很类似:产品介绍、计费模式、使用流程、最佳实践等;
  • 除了 Kubernetes 的 API,往往还有自己的 API 负责集群管理等工作

本段的介绍,基本是一个从简单到复杂的过程。

华为云容器引擎 CCE

华为云容器引擎 CCE 的模式非常清晰,这是一个在华为云服务上面运行的东西, 容器引擎本身是一个软件,它真正用的其他云服务则是如右边红框里面所示。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_06

例如,使用 CCE 有一些依赖,华为云弹性云服务器 ECS 是收费的,初次之外还有网络服务、存储服务、配套服务等,用了 CCE 也会用华为云的其他产品。

华为云容器引擎 CCE 的操作过程也比较简单:申请权限、创建集群、创建应用、查看状态。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_07

后面创建应用的工作,则都是 Kubernetes 的基本操作。显然在华为的模式中,客户对于 Kubernetes 集群有着控制权。

在上面操作中,创建 Kubernetes 混合集群、创建基于裸金属集群属于云服务器层面的差别,对于 CCE 的运行有性能影响,而无功能影响。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_云服务_08

华为云 CCE 本身不收费,主要靠其他云服务收费。在这种模式中,华为 CCE 也就是一个运行于华为 IaaS 上面的附赠软件。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_金山云_09

金山云容器引擎 KCE

金山云容器引擎 KCE 自身的定位是 PaaS,并且运行于金山的 IaaS 之上。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_云服务_10

金山云的 CCE 也是按照几个标准的过程创建,创建完成之后,直接可以用 Kubernetes 的标准操作来处理,

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_kubernetes_11

金山云 CCE 暂不收取服务本身费用,客户仅需要为使用的云资源付费。显然,金山云的模式也是将 CCE 当成附赠的软件来处理。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_12

腾讯云容器服务 TKE、EKS

腾讯云的容器服务分成两种模式:TKE、EKS,它们之间区别其实也就是客户专用 Kubernetes、托管 Kubernetes 的区别。

下面是腾讯云容器服务的申请过程——这个过程在各家云都是大同小异。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_云服务_13

EKS 代表弹性容器服务,按照腾讯云的介绍:弹性集群内运行的工作负载采用后付费的按量计费模式,费用根据实际配置的资源量按使用时间计算。

下面表格是 ETK、EKS 之间的差别。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_14

ETK、EKS 二者的本质差别是计费模式,由于 EKS 实现了弹性和托管,因此客户端控制权上了一些,从 Kubernetes 的功能来说,也少了一些。

下面是 EKS 缺省的 Kubernetes 功能,这其实是对客户的一种限制。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_腾讯云_15

腾讯的 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 节点,即可通过控制台或者命令配置容器实例的资源、指定应用容器镜像以及对外服务的方式,直接启动应用程序。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_云服务_16

阿里容器服务 ACK 三种模式,其实分别对 IaaS 上面送 Kubernetes、托管 Kubernetes、高度封装 Kubernetes 的模式。

阿里云称之为 Serverless Kubernetes 的内容,其实也并非很明确,Serverless 这个词的内涵和外延很复杂。不过,阿里云的这种模式,的确让用户做的事情比较少。

阿里容器服务 ACK 产品架构图如下所示。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_kubernetes_17

下面是阿里云三种 Kubernetes 的比较,这其实也就是客户的工作从多到少,客户控制权也从多到少。它们最终带来的是收费模式差别。

Kubernetes 时代的云容器平台:各家云产品模式逐渐丰富_云服务_18

从客户的角度思考三种模式

在 Kubernetes 容器平台时代,以上提到的三种模式都有应用的场景,在各个云上的支持也属于各有侧重。

从客户的角度来说,三种模式的价值可以总结如下:

  • 模式 1:在既有系统上云的过程中,只要让自己的系统成为云原生状态(能在标准 Kubernetes 上面运行),那么运行在自己的机房里面与运行在云上面的效果就是一样的,自己的控制权也是一样的。在很多系统还正在上云的情况下,这种模式价值显然比较大。
  • 模式 2:本模式类似托管服务器模式,由于 Kubernetes 的 Master 与弹性权力交由云服务提供商,因此理论上效率更高。这种模式其实也有变数,根据云服务提供商的不同,客户得到的可能是 Node(代表机器)、也可能是 Pod(代表容器)。如果客户不需要对 Kubernetes 有很强的控制权,这种模式可以”省心、省钱“。如果已经是一些无状态服务,其运行仅仅是副本编排调度的问题,那么应用这种模式已经足够。
  • 模式 3:客户如果只是需要运行一个很简单的程序,甚至不需要构建完整的 image,这种模式可以提供”模板化“的支持。