华为云云容器引擎CCE架构与核心组件剖析
容器技术已经成为云原生应用的标准交付方式,而Kubernetes则是容器编排的事实标准。但对于大多数企业来说,自行搭建和维护一套生产可用的Kubernetes集群并非易事——控制节点的高可用配置、etcd集群的备份恢复、网络插件的选型与调优、存储系统的对接,每一项都需要投入不小的运维成本。
华为云云容器引擎(Cloud Container Engine,简称CCE)正是为解决这些问题而生的企业级Kubernetes集群托管服务。它提供了高度可扩展、高性能的容器化应用部署和管理方案,支持Docker容器运行,覆盖了从集群管理、容器应用全生命周期管理到监控运维的容器全栈能力。本文将从集群类型、控制节点架构、工作节点管理、网络模型、存储方案和弹性伸缩六个维度,剖析CCE背后的技术架构。
一、集群类型:CCE Standard与CCE Turbo
CCE提供了两种集群类型,以适应不同的业务场景。
CCE Standard集群是标准的Kubernetes集群托管服务,控制节点由华为云托管,用户只需创建和管理工作节点(Node)。它适用于大多数常规容器化业务场景,支持容器隧道网络和VPC网络两种网络模型。
CCE Turbo集群是面向云原生2.0设计的下一代容器集群。它在Standard集群的基础上,在网络、计算、调度等方面做了深度优化。网络层面采用云原生网络2.0模型,Pod直接使用VPC子网IP,省去了隧道封装的开销;安全层面支持安全组隔离,Pod级别就能配置防火墙规则;运行时层面同时支持普通运行时(runC)和安全运行时(Kata)。
二、控制节点架构:托管的Kubernetes Master
CCE集群的控制节点完全由华为云托管,用户不需要关心Master节点的部署、运维和版本升级。在生产环境中,CCE的高可用模式部署了三个控制节点,确保单个节点故障时集群仍能正常提供服务。
控制节点运行着Kubernetes的核心组件:
API Server:作为集群的入口,负责对接集群内外的所有服务接口,所有对集群的操作(创建Pod、查询资源、配置变更等)都通过API Server完成。
Controller Manager:运行着各类控制器,包括节点控制器、副本控制器、端点控制器等。其中副本控制器负责确保多副本应用服务的高可用性,当某个Pod异常退出时自动创建新的Pod来替代。
Scheduler:负责将新创建的Pod调度到合适的工作节点上,调度时会综合考虑节点的资源余量、节点亲和性、污点和容忍度等策略。
etcd:集群的分布式键值存储,保存着所有集群资源的配置信息和状态数据。CCE对etcd进行了托管和自动备份,避免了自行运维etcd集群的各种风险。
三、工作节点与节点池
工作节点(Node)是运行容器化应用的实际计算资源,本质上是华为云的弹性云服务器(ECS)实例。CCE通过节点池来管理一组具有相同配置的工作节点。
节点池支持多种云服务器规格,包括通用计算型、计算增强型、内存优化型以及搭载GPU的异构计算型,可以满足AI训练、深度学习推理等高性能计算场景的需求。节点池还支持弹性伸缩策略,当集群资源不足时可以自动增加节点,资源空闲时可以自动缩减节点。
四、网络模型:三种方案适配不同场景
CCE在网络层面提供了三种容器网络模型,分别对应不同的性能要求和规模约束。
容器隧道网络模型:在主机网络平面之上,通过隧道封装技术为容器创建一个独立的网络平面。CCE的隧道网络使用VXLAN协议进行封装,以Open vSwitch作为虚拟交换机的后端。这种模型的优势在于对底层网络基础设施无特殊要求,节点数量不受VPC路由配额的限制,适合大规模集群场景。缺点是隧道封装带来了一定的性能损耗。
VPC网络模型:将VPC的路由方式与底层网络深度整合。每个节点会被分配一个固定大小的IP地址段,Pod的IP直接从该地址段中分配,跨节点Pod通信通过VPC路由表直接转发。这种模型的优势是性能接近主机网络的水平,没有隧道封装的开销。但缺点是集群的节点规模受限于VPC的自定义路由配额,通常适合中小规模集群。
云原生网络2.0模型:CCE Turbo集群专属的网络方案。每个Pod直接分配VPC子网内的独立IP地址,继承了Kubernetes“每个Pod一个独立IP”的网络模型。该模型彻底去掉了隧道封装层,网络性能达到最优,同时支持Pod级别的安全组隔离。
五、存储方案:Everest插件统一对接
CCE基于Kubernetes社区标准的CSI(Container Storage Interface)规范,提供了自研的容器存储插件Everest。Everest插件实现了容器编排平台与各类存储系统的统一对接,可以无缝对接华为云的多款IaaS存储服务:
云硬盘(EVS) :块存储类型,适用于需要高性能随机读写的场景,如数据库容器。Everest支持将EVS盘作为文件系统挂载到容器的指定目录,也支持作为原始块设备直接挂载。
文件存储(SFS) :适用于多Pod共享读写的场景,如配置文件存储、日志收集等。
对象存储(OBS) :适用于海量非结构化数据的存储,如备份归档、多媒体内容等。
极速文件存储:提供高IOPS和低延迟的文件存储能力,适用于对性能要求较高的共享存储场景。
Everest插件还持续优化了与OBS存储的集成,例如在1.2.0版本中优化了密钥认证功能。
六、弹性伸缩:工作负载与节点双层弹性
CCE的弹性伸缩能力覆盖了工作负载层和资源层两个维度。
工作负载弹性(HPA) :基于Kubernetes社区的HPA(Horizontal Pod Autoscaler)功能,根据Pod的CPU利用率、内存利用率等指标自动调整Pod的副本数量。CCE在此基础上增加了应用级别的冷却时间窗和扩缩容阈值等功能,避免过于频繁的扩缩容导致服务抖动。
节点弹性(Cluster Autoscaler) :当集群中Pending状态的Pod因资源不足无法调度时,自动触发节点扩容,从节点池中创建新的ECS实例加入集群。反之,当节点资源长期闲置时,自动触发缩容回收资源。节点弹性通过CCE的Cluster Autoscaler插件实现。
总结
华为云CCE通过托管的控制节点、灵活的工作节点池、三种可选的容器网络模型、基于CSI标准的Everest存储插件以及双层弹性伸缩能力,构建了一个企业级的容器服务平台。它将Kubernetes复杂的集群运维工作下沉到云平台,让开发者能够更专注于应用本身的开发和交付。理解CCE的架构设计,有助于在实际使用中做出更合理的集群规划——比如根据业务规模选择Standard还是Turbo集群、根据性能需求选择VPC网络还是隧道网络、根据数据持久化需求配置合适的存储方案。
- 点赞
- 收藏
- 关注作者
评论(0)