3.6.1 功能特点
1. 容器服务的功能特点
Kubernetes 是一个开源的容器编排框架。容器将应用及其依赖关系打包到一个可分发的构件中(容器镜像),这个构件可移动到多个环境中,从而简化软件的开发和部署。Kubernetes 通过编排这些容器,自动化管理应用的资源利用、故障处理、可用性、配置、可扩展性和理想状态。Kubernetes 相关概念可参阅相关图书。
阿里云容器服务 ACK 基于原生Kubernetes 进行适配和增强,简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
如图3-74 所示,阿里云容器服务 ACK 提供了多Kubernetes 集群形态的管理,以便捷、高效的使用方式为用户提供了若干功能,具体如下。
图 3-74 阿里云容器服务 ACK 产品架构
融合阿里云虚拟化技术,容器服务 Kubernetes 版支持三种集群形式: 专有模式(Dedicated Kubernetes):用户需要创建3 个 Master(高可用) 节点及若干 Worker 节点,可对集群基础设施进行更细粒度的控制,需要自行规划、维护、升级服务器集群。
托管模式(Managed Kubernetes):用户只需创建 Worker 节点,Master 节 点由容器服务创建并托管,具备简单、低成本、高可用、无须运维管理 Kubernetes 集群 Master 节点的特点,用户可以更多关注业务本身。
无服务器模式(Serverless Kubernetes):用户无须提前规划ECS 节点和 容量,可以按应用所需的资源进行付费、动态的弹性扩容,ECI 在阿里云基础能力之上进行了优化,使其具备安全、高效的特征,极大降低了管理Kubernetes 集群的难度。
支持强大的网络、存储、混合集群管理、水平扩容、应用扩展等特性。
支持安全镜像和Helm 工具,与阿里云RAM、KMS、日志、监控等产品高 度集成,提供一个安全合规的Kubernetes 解决方案,为用户提供混合云、容器安全、CI/CD、DevOps 等增强能力。
容器服务 Kubernetes 版提供 Web Console 、API 和 SDK。
提供统一的多集群管理能力,支持集群联邦、线上应用的统一管理。
基于服务网格技术,支持不同集群之间的流量切换,支持服务就近访问、 地域亲和性,以及将服务请求故障转移到健康检查正常的地域的自愈能力。
随着云原生时代的到来, 阿里云容器服务在Kubernetes 之上,结合Istio 服务网格,提供了多云、混合云的支持能力,针对微服务提供了有效的治理功能,并以Kubernetes 和Istio 为基础,提供了针对特定应用负载的不同支持,例如针对Kubeflow 服务的流量治理、为Knative 提供负载的路由管理能力等。
2. 弹性容器实例ECI 的功能特点
如前面所述,无服务器模式集群中的Pod 是基于弹性容器实例ECI 创建的,底层运行在轻量的安全容器内,应用容器之间相互隔离,防止互相干扰,因此具有更好的安全隔离性能。使用无服务器模式集群时,用户无须担心集群节点的水平扩展能力,可以根据应用负载,轻松灵活扩容应用所需资源。那么到底它有什么详细的功能特点呢?本节会揭开它的神秘面纱。
首先,ECI 跟 ECS 共用整个阿里云的计算基础设施,有足够的弹性库存,并能 够提供广泛的规格;其次,通过安全沙箱技术,提供比 ECS 规格更细粒度的极小规 格(0.1c)。通俗的理解是:有阿里云的地域,就会有 ECI;ECS 能支撑的业务,容器 化后 ECI 就能支撑,提供了广义的弹性能力。
从弹性伸缩的角度出发,因为复用 ECS 大资源池,所以弹性库存的预留成本、分摊成本会比独立维护小资源池更低。从用户角度的出发,ECI 通过复用 ECS 统一的 Quota 约束,提供了更好的弹性深度。
从成本的角度出发,按规格创建的 ECI 与 ECS 售价保持一致,提供预付费抵用券(RI)、按量付费、竞价实例(Spot)等售卖形态。ECI 推荐的资源计费类型选择如图 3-75 所示。
图 3-75 ECI 推荐的资源计费类型选择
在云原生和 Serverless 的浪潮下,底层 IaaS 基础设施提供方,关注的核心点还是如何为用户提供云原生及 Serverless 场景下的 IaaS 基础设施。不可变基础设施通过快速的重新部署,极大地减少了运维工作,随之而来的就是容器的频繁创建和销毁。关于容器存活时间的统计数据如图 3-76 所示,78% 的容器存活时间不到一小时,89% 的容器存活时间不到一天,95% 的容器存活时间不到一周。
图 3-76 容器存活时间
在公共云场景下,用户传统的工作模式是,先购买一台虚拟机部署系统环境,再开始部署容器。这种模式有两个比较明显的弊端 :1)需要提前进行容量预估和弹性伸缩;2)在业务流量下降的时候存在资源的闲置。
是否有办法降低这样做的成本和工作量,让基础设施也随着业务流量和容器的生命周期而创建和销毁?
ECI 及无服务器模式正是为了满足上面的需求而推出的,ECI 定位于 Serverless 和容器化的弹性计算资源供给服务。我们希望 ECI 的用户可以不再关心底层的基础设施和运维,无须管理底层服务器,只需要提供打包好的镜像即可运行容器,并仅为容器实际运行消耗的资源付费。通过简单的两步配置,用户就可以在云上快捷部署一批容器,ECI 中容器组的概念跟 Kubernetes 的 Pod 的概念类似。
用户既可以通过控制台快速部署自己的容器应用,也可以借助 ECI 提供的丰富
SDK 将 ECI 接入已有的业务系统或容器编排系统中,借助 ECI 的弹性伸缩能力轻松 应对突发业务流量。通过 ECI 可以简化业务部署、构建等工作,让用户专注于业务逻 辑而无须关心复杂的基础设施维护工作。
从 ECI 诞生到现在,经历了几次大的定位演进,但核心的 Serverless 和容器组交 付定位并未发生改变,弹性容器实例架构如图 3-77 所示。
图 3-77 弹性容器实例架构
Serverless :用户不需要运维和管理 ECS,通过指定容器镜像即可运行容器。ECI 提供容器运行时的封装,并自动与阿里云各产品对接,提供阿里云上的全托管免运维 Serverless 能力。
容器组交付:ECI 提供容器组形式的轻量化资源交付,容器组内网络、存储资源共享,同时,兼容并无缝对接 Kubernetes。