# 基本概念
云容器引擎（Cloud Container Engine，简称CCE）提供高度可扩展的、高性能的企业级Kubernetes集群。借助云容器引擎，您可以在云上轻松部署、管理和扩展容器化应用程序。
云容器引擎提供Kubernetes原生API，支持使用kubectl，且提供图形化控制台，让您能够拥有完整的端到端使用体验。
使用CCE前，建议先了解以下基本概念，帮助您建立系统的认知。
#### 集群与节点
#### 集群（Cluster）
Kubernetes集群指容器运行所需要的云资源组合，关联了若干云服务器节点、负载均衡等云资源。您可以理解为集群是"同一个子网中一个或多个弹性云服务器（又称：节点）"通过相关技术组合而成的计算机群体，为容器运行提供了计算资源池。
一个Kubernetes集群由控制面（Control Plane）和工作节点（Worker Node）两部分组成：
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002631673932.png "点击放大")
云容器引擎支持的集群类型如下：
| 集群类型              | 描述                                                                                                                                                                                                                                                   |
|:---|:---|
| CCE Standard集群    | CCE Standard集群是云容器引擎服务的标准版本集群，提供商用级容器集群服务，并完全兼容开源 Kubernetes 集群标准功能。 CCE Standard集群为您提供简单、低成本、高可用的解决方案，无需管理和运维控制节点，并且可根据业务场景选择使用容器隧道网络模型或VPC网络模型，适合对性能和规模没有特殊要求的通用场景。                      |
| CCE Turbo集群        | CCE Turbo集群是基于云原生基础设施构建的云原生2.0容器引擎服务，具备软硬协同、网络无损、安全可靠、调度智能的优势，为用户提供一站式、高性价比的全新容器服务体验。 CCE Turbo集群提供了面向大规模高性能的场景云原生2.0网络，容器直接从VPC网段内分配IP地址，容器和节点可以分属不同子网，支持VPC内的外部网络与容器IP直通，享有高性能。              |
| CCE Autopilot集群 | CCE Autopilot是云容器引擎服务推出的Serverless版集群，提供免运维的容器服务，并提供经过优化的Kubernetes兼容能力。 CCE Autopilot集群提供了无用户节点的部署方式，简化了应用部署流程。您无需购买节点，也无需对节点的部署、管理和安全性进行维护，只需要关注应用业务逻辑的实现，可以大幅降低您的运维成本，提高应用程序的可靠性和可扩展性。 |
   
三种集群的关键差异请参见[集群类型对比](https://support.huaweicloud.com/usermanual-cce/cce_10_0342.html)。
关于集群的更多操作请参见[购买Standard/Turbo集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html)。
#### 节点（Node）
在Kubernetes集群中，节点是运行容器化应用程序的工作主机，它们可以是物理服务器或虚拟机，并通过网络连接形成集群。每个节点都安装了必要的组件：
- **容器运行时**：负责运行容器（如containerd、Docker）。
- **kubelet**：向API Server上报节点和Pod状态，接收并执行Pod配置。
- **kube-proxy**：维护节点上的网络规则，实现Service的流量转发。
节点资源被Kubernetes统一调度和管理，用于部署和运行[实例（Pod）]（容器的最小部署单元），是集群的基础运行环境，保障应用程序的高可用性和弹性扩展。
关于节点的更多操作请参见[创建节点](https://support.huaweicloud.com/usermanual-cce/cce_10_0363.html)。
#### 节点池（NodePool）
在Kubernetes集群中，节点池是一组具有相同配置和属性的节点集合。这些节点通常具有相同的硬件规格、操作系统版本和Kubernetes节点配置。节点池可以方便地实现集群资源的批量管理与扩展。您可以根据需求创建不同规模和配置的节点池，以满足不同应用程序的负载调度需求，确保资源高效利用。同时，节点池支持弹性伸缩，可根据工作负载自动调整节点数量，从而优化资源利用效率，提升集群的灵活性和可扩展性。
关于节点池的更多操作请参见[创建节点池](https://support.huaweicloud.com/usermanual-cce/cce_10_0012.html)。
#### 容器运行时（Container Runtime）
容器运行时是节点上负责创建和运行容器的组件。Kubernetes通过容器运行时接口（CRI）与运行时交互，支持的运行时包括：
- **containerd**（推荐）：轻量级、高性能，是当前Kubernetes社区推荐的默认运行时。
- **Docker**：通过dockershim适配，Kubernetes 1.24起已不再内置支持，需通过cri-dockerd适配。
![](https://support.huaweicloud.com/basics-cce/public_sys-resources/note_3.0-zh-cn.png)
CCE当前默认使用containerd作为容器运行时，从v1.34版本起新创建的节点不再支持使用Docker。
关于容器运行时的更多说明请参见[容器运行时说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0462.html)。
#### 网络
#### 虚拟私有云（VPC）
虚拟私有云是通过逻辑方式进行网络隔离，提供安全、隔离的网络环境。您可以在VPC中定义与传统网络无差别的虚拟网络，同时提供弹性IP、安全组等高级网络服务。
通过VPC，CCE集群可以实现节点与容器网络的安全隔离，同时支持弹性公网IP和带宽配置，满足集群的灵活扩展需求。
关于虚拟私有云的更多操作请参见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
#### 安全组
安全组是一个逻辑上的分组，为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。安全组创建后，用户可以在安全组中定义各种访问规则，当弹性云服务器加入该安全组后，即受到这些访问规则的保护。
关于安全组的更多操作请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。
#### 集群、虚拟私有云、安全组和节点的关系
如[图1]，同一个Region下可以有多个虚拟私有云（VPC）。虚拟私有云由一个个子网组成，子网与子网之间的网络交互通过子网网关完成，而集群就是建立在某个子网中。因此，存在以下三种场景：
- 不同集群可以创建在不同的虚拟私有云中。
- 不同集群可以创建在同一个子网中。
- 不同集群可以创建在不同的子网中。
 
图1集群、VPC、安全组和节点的关系   
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002077950546.png "点击放大")
#### 服务（Service）
在Kubernetes中，Service用于定义Pod的访问策略，为Pod提供稳定的访问入口。由于Pod的IP地址会随重启而变化，Service通过标签选择器关联后端Pod，提供固定的访问方式。
Service类型的取值以及行为如下：
- ClusterIP：这是默认的Service类型，它会在集群内部为Service分配一个唯一的IP地址。这个IP地址只在集群内部可用，外部无法直接访问。ClusterIP类型的Service通常用于集群内部的通信。
- NodePort：NodePort类型的Service会在集群的所有节点上打开一个静态端口（NodePort），通过这个端口可以访问Service。这个类型的Service允许外部流量通过节点绑定的弹性IP和指定的端口访问Service，从而实现对外提供服务。
- LoadBalancer：利用云服务提供商的负载均衡器，将Service暴露给外部网络。外部的负载均衡器可以将流量转发到集群中NodePort服务和ClusterIP服务。
- DNAT：使用DNAT网关为集群节点提供网络地址转换服务，使多个节点可以共享使用弹性IP。与直接为节点绑定弹性IP的方式相比，DNAT方式增强了可靠性，弹性IP无需与单个节点绑定，任何节点状态的异常不影响其访问。
关于服务的更多操作请参见[服务概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0249.html)。
#### 路由（Ingress）
Kubernetes集群中的Ingress用于管理外部访问集群内服务的规则。它提供基于域名、路径的路由功能，支持负载均衡、TLS终止和SSL证书管理。通过Ingress，可以将多个服务的流量统一管理，对外暴露一个入口点，简化网络配置，提升集群的可扩展性和安全性，是实现微服务架构中服务暴露的重要方式。
关于路由的更多操作请参见[路由概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html)。
#### 网络策略（NetworkPolicy）
Kubernetes集群中的NetworkPolicy用于定义Pod之间的网络通信策略。它通过指定允许或拒绝的流量规则，控制Pod之间的访问关系，增强集群的网络安全。
NetworkPolicy支持基于以下维度定义规则：
- **Pod标签**：匹配源/目标Pod的标签选择器
- **命名空间**：匹配源/目标命名空间
- **IP地址块**：匹配CIDR地址范围
- **端口**：匹配协议和端口号
关于网络策略的更多操作请参见[配置网络策略（NetworkPolicy）限制Pod访问的对象](https://support.huaweicloud.com/usermanual-cce/cce_10_0059.html)。
#### 工作负载
 #### 实例（Pod）
在Kubernetes中，Pod是部署应用或服务的最小基本单位。一个Pod可以封装一个或多个应用容器，多个容器通常共享存储和网络资源。每个Pod都有一个独立的网络IP地址，这使得 Pod内的容器可以相互通信，并且可以被集群内的其他Pod访问。同时，Kubernetes提供多种策略选项来管理容器的运行方式，包括重启策略、资源请求和限制、生命周期钩子等。
图2实例（Pod）   
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002078105294.png "点击放大")
**Pod生命周期**
Pod从创建到删除经历以下阶段，阶段之间的流转由Kubernetes控制：
| 阶段            | 触发条件                 | 说明                            |
|:---|:---|:---|
| **Pending**    | Pod创建请求被API Server接受 | 等待调度到节点、拉取镜像                 |
| **Running**  | 所有容器镜像拉取完成并创建成功     | 至少一个容器正在运行                    |
| **Succeeded** | 所有容器成功退出且不会重启     | 适用于一次性任务（Job）                 |
| **Failed**   | 至少一个容器以非零状态退出      | 可通过kubectl describe pod查看失败原因 |
| **Unknown**    | 与Pod所在节点通信失败         | 通常是节点失联                     |
   
Pod的生命周期中还涉及以下关键机制：
- **重启策略**（restartPolicy）：Always（默认，容器退出后自动重启）、OnFailure（非零退出时重启）、Never（不重启）
- **健康检查**（Probe）：livenessProbe（存活探针，失败则重启容器）、readinessProbe（就绪探针，失败则从Service摘除）、startupProbe（启动探针，应用启动前阻塞其他探针）
- **生命周期钩子**：postStart（容器启动后执行）、preStop（容器终止前执行）
 
#### 容器（Container）
一个通过Docker镜像创建的运行实例被称为容器。在一个节点（宿主机）上可以运行多个容器。容器的实质是进程，但与直接在宿主机上执行的进程不同，容器进程运行于属于自己的独立的命名空间中。这些命名空间提供了一种隔离机制，使得每个容器都有自己的文件系统、网络接口、进程 ID 等，从而实现了操作系统级别的隔离。
图3实例Pod、容器Container、节点Node的关系   
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002113704641.png "点击放大")
#### 工作负载类型
工作负载是在Kubernetes上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件，您都可以在Kubernetes上的一组Pod中运行它。在Kubernetes中，工作负载是对一组Pod的抽象模型，用于描述业务的运行载体，包括Deployment、StatefulSet、DaemonSet、Job、CronJob等多种类型。
| 类型              | 说明                 | 典型场景                               | Pod特性                |
|:---|:---|:---|:---|
| **Deployment**    | 无状态工作负载，支持弹性伸缩与滚动升级  | Web服务器（NGINX）、博客（WordPress）      | 完全独立、可替换、无序          |
| **StatefulSet** | 有状态工作负载，Pod有序编号，持久标识 | 分布式存储（ETCD）、数据库（MySQL-HA）        | 有序部署/删除，持久标识符，稳定网络ID |
| **DaemonSet**      | 守护进程集，确保每个节点运行一个Pod  | 日志收集（Fluentd）、监控代理（Node Exporter） | 每节点一个，新节点自动部署          |
| **Job**           | 一次性任务，确保指定数量Pod成功完成 | 数据备份、批量处理                         | 成功完成后不再重启            |
| **CronJob**       | 定时任务，按Cron表达式周期运行  | 定时数据同步、定时报告                       | 按时间周期创建Job            |
| **ReplicaSet**   | 维护Pod副本数量          | 通常由Deployment自动管理                 | 确保指定副本数持续运行          |
   
![](https://support.huaweicloud.com/basics-cce/public_sys-resources/note_3.0-zh-cn.png)
ReplicaSet是Deployment的底层实现。Deployment通过管理ReplicaSet实现滚动更新和回滚------每次更新创建新ReplicaSet并逐步替换旧ReplicaSet管理的Pod。用户通常无需直接操作ReplicaSet。
关于工作负载的更多操作请参见[创建工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0673.html)。
图4工作负载与Pod的关系   
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002113629661.png)
#### 镜像（Image）
镜像（Image）是一个模板，是容器应用打包的标准格式，用于创建容器。或者说，镜像是一个特殊的文件系统，除了提供容器运行时所需的程序、库、资源、配置等文件外，还包含了一些为运行时准备的配置参数（如匿名卷、环境变量、用户等）。镜像不包含任何动态数据，其内容在构建之后也不会被改变。在部署容器化应用时可以指定镜像，镜像可以来自于 Docker Hub、容器镜像服务或者用户的私有镜像仓库。例如，开发者可以创建一个包含特定应用程序及其所有依赖的镜像，确保在任何环境中都能以相同的方式运行。
镜像（Image）和容器（Container）的关系，就像是面向对象程序设计中的类和实例一样，镜像是静态的定义，容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
关于镜像的更多操作请参见[上传镜像](https://support.huaweicloud.com/qs-swr/index.html)。
图5镜像、容器、工作负载的关系   
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002077950566.png "点击放大")
#### 存储与配置
#### 存储卷（PersistentVolume）
PersistentVolume（PV）是集群的一块存储资源，可以是本地磁盘或网络存储。它具有独立于Pod的生命周期，这意味着即使使用PV的Pod被删除，PV中的数据也不会丢失。
#### 存储声明（PersistentVolumeClaim）
PersistentVolumeClaim（PVC）是用户对存储资源PV的请求，它指定了存储的大小、访问模式等要求，Kubernetes会自动匹配合适的PV来满足这些要求。
PV和PVC之间的关系类似于Pod和Node的关系：Pod消耗Node资源，而PVC消耗PV资源。
![](https://support.huaweicloud.com/basics-cce/zh-cn_image_0000002662013237.png "点击放大")
#### 命名空间（Namespace）
命名空间是对一组资源和对象的抽象整合，允许您将相关的资源和对象（如Pods、Services、Deployments等）组织在一起，形成一个逻辑上的分组。不同命名空间中的数据彼此隔离，但它们仍可以共享同一个集群的基础资源（如CPU、内存、存储等）。您可以在不同的命名空间中部署不同的环境，例如开发环境、测试环境和生产环境，这样可以确保环境之间的隔离，同时便于管理和维护。
在Kubernetes中，大部分资源对象都是命名空间级别的，如Pods、Services、Replication Controllers和Deployments等，这意味着它们属于某一个命名空间（默认是default）。但仍有一部分资源是集群级别的，例如Node、PersistentVolumes等，它们不属于任何命名空间，为所有命名空间中的资源提供服务。
关于命名空间的更多操作请参见[创建命名空间](https://support.huaweicloud.com/usermanual-cce/cce_10_0278.html)。
#### 配置项（ConfigMap）
Kubernetes集群中的ConfigMap用于存储配置数据，它可以将配置信息（如配置文件、命令行参数等）从Pod中分离出来，以键值对的形式存储。通过ConfigMap，用户可以轻松地在多个Pod之间共享和更新配置，而无需重新构建镜像。它支持多种数据格式（如YAML、JSON），方便灵活地管理应用程序的配置，确保配置的可维护性和可扩展性。
关于配置项的更多操作请参见[创建配置项](https://support.huaweicloud.com/usermanual-cce/cce_10_0152.html)。
#### 密钥（Secret）
Kubernetes集群中的Secret用于存储敏感信息（如密码、密钥、证书等），它以加密形式存储数据，确保敏感信息的安全性。Secret可以通过挂载或环境变量的形式在Pod中使用，也可以用于存储集群内部的认证信息。通过Secret，用户可以将敏感信息与应用程序代码分离，降低泄露风险，同时实现对敏感数据的集中管理和动态更新，保障集群的安全性和灵活性。
关于密钥的更多操作请参见[创建密钥](https://support.huaweicloud.com/usermanual-cce/cce_10_0153.html)。
**配置项（ConfigMap）与密钥（Secret）对比**
| 维度      | ConfigMap         | Secret                 |
|:---|:---|:---|
| 数据类型  | 非敏感配置（端口号、日志级别等）   | 敏感信息（密码、Token、证书等）     |
| 存储方式 | 明文存储在etcd中          | Base64编码存储在etcd中（可配置加密） |
| 大小限制    | 单个ConfigMap不超过1MiB | 单个Secret不超过1MiB        |
| 使用方式   | 环境变量、命令行参数、配置文件挂载  | 环境变量、文件挂载（如TLS证书目录）    |
| 更新机制 | 挂载的配置文件可自动热更新       | 更新后需要重建Pod才能生效        |
   
#### 环境变量
环境变量是指容器运行环境中设定的一个变量，您可以在创建容器模板时设定不超过30个的环境变量。环境变量可以在工作负载部署后修改，为工作负载提供了极大的灵活性。
CCE支持以下环境变量来源：
- **手动输入**：直接设置键值对
- **ConfigMap引用**：从ConfigMap中引入配置
- **Secret引用**：从Secret中引入敏感信息
- **系统变量**：引用Pod的名称、命名空间、IP等字段
在CCE中设置环境变量与Dockerfile中的"ENV"效果相同。
#### 调度与伸缩
#### 亲和性与反亲和性
在应用没有容器化之前，原先一个虚机上会装多个组件，进程间会有通信。但在做容器化拆分的时候，往往直接按进程拆分容器，比如业务进程一个容器，监控日志处理或者本地数据放在另一个容器，并且有独立的生命周期。这时如果分布在网络中两个较远的点，请求经过多次转发，性能会很差。
- 亲和性：可以实现就近部署，增强网络能力实现通信上的就近路由，减少网络的损耗。如：应用A与应用B两个应用频繁交互，所以有必要利用亲和性让两个应用尽可能地靠近，甚至在一个节点上，以减少因网络通信而带来的性能损耗。
- 反亲和性：主要是出于高可靠性考虑，尽量分散实例，某个节点故障的时候，对应用的影响只是N分之一或者只是一个实例。如：当应用采用多副本部署时，有必要采用反亲和性让各个应用实例打散分布在各个节点上，以提高可用性。
关于亲和性与反亲和性的更多操作请参见[工作负载调度策略概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0232.html)。
#### 污点与容忍（Taint \& Toleration）
污点和容忍是节点级别的调度约束，与亲和性互补------亲和性定义Pod"想去哪"，污点定义节点"排斥谁"：
| 污点效果                  | 说明                     |
|:---|:---|
| **NoSchedule**        | 不调度新Pod到该节点（已有的Pod不受影响） |
| **PreferNoSchedule** | 尽量不调度到该节点（非强制）          |
| **NoExecute**       | 不调度且驱逐已有不容忍的Pod          |
   
#### 工作负载弹性伸缩（HPA）
Horizontal Pod Autoscaling（HPA）是Kubernetes中实现Pod水平自动伸缩的功能。HPA允许Kubernetes集群根据CPU使用率、内存使用率或其他选择的指标自动增加或减少Pod的数量。您可以设置目标指标的阈值，HPA会根据这些阈值自动调整Pod的数量，以保持应用的性能。
关于工作负载弹性伸缩的更多操作请参见[创建HPA策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0208.html)。
#### 节点弹性伸缩（Cluster Autoscale）
节点弹性伸缩是根据集群负载动态调整节点数量的功能。当业务负载上升时，自动添加新节点以扩展资源；当负载下降时，自动移除多余节点以节省成本。它可以结合集群的资源使用情况（如CPU、内存利用率）和预设规则，实现节点的自动增减，确保集群资源与业务需求相匹配，提升资源利用效率和集群的灵活性。
关于节点弹性伸缩的更多操作请参见[创建节点弹性策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0209.html)。
#### 标签和注解
#### 标签（Label）
在Kubernetes中，标签（Label）是附加到资源对象（如Pod、Service、Deployment等）上的键值对。标签的主要作用是为这些对象提供额外的、语义化的元数据，以便于用户和系统能够更容易地识别、组织和管理资源。
#### 标签选择器（LabelSelector）
在Kubernetes中，标签选择器是一种强大的机制，极大地简化了资源管理和操作的复杂性。它允许用户根据资源对象上的标签来选择和分组这些对象，可以对选中的资源组执行批量操作，如流量分配、扩缩容、更新配置、监控状态等。
应用场景：
- Service：选择后端Pod
- Deployment：选择管理的Pod
- HPA：选择伸缩目标
- NetworkPolicy：选择网络策略作用对象
 
#### 注解（Annotation）
Annotation与Label类似，也采用key/value键值对形式，但用途和约束不同。
- Label：用于标识资源，具有严格的命名规范，属于Kubernetes对象的元数据（Metadata），可通过LabelSelector进行资源筛选，支撑调度、服务发现等核心机制。
- Annotation：用于附加任意非标识性信息，不属于对象选择机制。Kubernetes系统不直接依赖注解控制资源行为，但可将其暴露给外部工具，用于扩展Kubernetes能力。
 
#### 资源配额（Resource Quota）
资源配额（Resource Quotas）允许管理员为命名空间设置资源使用总和的限制，例如CPU、内存、磁盘空间和网络带宽等。
#### 资源限制（Limit Range）
默认情况下，K8s中所有容器都没有任何CPU和内存限制。LimitRange用来给命名空间中的对象（如Pod等）增加资源限制。
LimitRange对象提供的限制能够实现以下能力：
- 在一个命名空间中对每个Pod或容器的最小/最大资源使用量进行限制。
- 在一个命名空间中对每个PersistentVolumeClaim能申请的最小/最大存储空间进行限制。
- 在一个命名空间中对一种资源的申请值和限制值的比值进行控制。
- 设置一个命名空间中对计算资源的默认申请/限制值，并且自动在运行时注入到多个容器中。
 
#### 核心组件
#### API Server
API Server（即kube-apiserver组件）是Kubernetes集群的核心组件之一，也是整个Kubernetes系统的统一入口，负责处理所有来自客户端的API请求，供用户、集群中的不同部分和集群外部组件相互通信，所有针对集群资源（如Pod、Service、Deployment等）的操作都必须通过API Server完成。
API Server的关键特性和功能如下：
- Kubernetes API接口暴露：API Server提供了一个RESTful API，用于管理和操作Kubernetes资源，如Pod、Service、Deployment等。
- 安全访问控制：
  - 认证（Authentication）：验证请求者的身份（如通过Token、客户端证书、用户名密码等）。
  
  - 授权（Authorization）：检查已认证用户是否有权执行请求的操作（如通过RBAC、ABAC等策略）。
  
  - 准入控制（Admission Control）：在资源创建/更新/删除前，通过准入控制器（Admission Controllers）对请求进行校验或修改。
   
- API版本管理：支持多版本API（如v1、apps/v1等），方便功能迭代和兼容性维护。
- 与其他组件的交互：
  - etcd：读写etcd以持久化集群状态。
  
  - kube-controller-manager：通过API监听资源变化，执行控制逻辑（如节点控制器、 replication控制器）。
  
  - kube-scheduler：通过API获取待调度Pod，更新调度结果。
  
  - kubelet：向API上报节点和Pod状态，接收Pod配置并执行。
  
  - kubectl：用户通过kubectl调用API操作集群。
   
更多关于API Server的配置说明，请参见[kube-apiserver](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-apiserver/)。
#### kube-controller-manager
kube-controller-manager是Kubernetes的大脑，运行多个控制器，每个控制器是一个独立的控制循环，通过API Server监听资源变化并执行相应的控制逻辑，包括：
- **节点控制器**：检测并响应节点故障
- **副本控制器**：维护Pod副本数量
- **Service Account控制器**：为新建的命名空间创建默认账户
- **端点控制器**：填充Service的Endpoints对象
更多关于kube-controller-manager的说明，请参见[kube-controller-manager](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-controller-manager/)。
#### kube-scheduler
kube-scheduler负责将未调度的Pod分配到合适的节点上。调度过程分为两个阶段：
1. **过滤**：排除不满足Pod资源需求或调度约束的节点
2. **打分**：对剩余节点按优先级排序，选择最优节点
调度决策考虑的因素包括：资源需求、亲和性/反亲和性规则、污点与容忍、数据本地性等。
更多关于kube-scheduler的说明，请参见[kube-scheduler](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/)。
#### etcd
etcd是Kubernetes集群的分布式键值存储系统，用于持久化存储集群的所有状态数据，包括：
- 集群配置信息
- 节点状态和健康信息
- Pod、Service等资源对象的定义和状态
- ConfigMap、Secret等配置数据
etcd是集群的数据基石，其可用性直接决定了集群的可用性。CCE Standard/Turbo集群的控制面中，etcd由云平台托管维护，用户无需管理。
#### kubelet
kubelet是运行在每个节点上的代理，负责：
- 向API Server上报节点和Pod状态
- 接收Pod配置并确保容器按规范运行
- 执行健康检查，重启失败的容器
- 挂载存储卷
更多关于kubelet的说明，请参见[kubelet](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kubelet/)。
#### kube-proxy
kube-proxy运行在每个节点上，维护网络规则，实现Service的流量转发。kube-proxy通过监听API Server中Service和Endpoints的变化，动态更新iptables或IPVS规则，将到达Service的流量转发到后端Pod。
更多关于kubelet的说明，请参见[kube-proxy](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-proxy/)。
#### 模板（Chart）
Kubernetes集群可以通过[Helm](https://helm.sh/)实现软件包管理，这里的Kubernetes软件包被称为模板（Chart）。Helm对于Kubernetes的关系类似于在Ubuntu系统中使用的apt命令，或是在CentOS系统中使用的yum命令，它能够快速查找、下载和安装模板（Chart）。
模板（Chart）是一种Helm的打包格式，它只是描述了一组相关的集群资源定义，而不是真正的容器镜像包。模板中仅仅包含了用于部署Kubernetes应用的一系列YAML文件，您可以在Helm模板中自定义应用程序的一些参数设置。在模板的实际安装过程中，Helm会根据模板中的YAML文件定义在集群中部署资源，相关的容器镜像并不会包含在模板包中，而是依旧从YAML中定义好的镜像仓库中进行拉取。
- 对开发者：需要将容器镜像包发布到镜像仓库，并通过Helm的模板将安装应用时的依赖关系统一打包，预置一些关键参数，来降低应用的部署难度。
- 对使用者：可以使用Helm查找模板（Chart）包并支持调整自定义参数。Helm会根据模板包中的YAML文件直接在集群中安装应用程序及其依赖，应用使用者不用编写复杂的应用部署文件，即可以实现简单的应用查找、安装、升级、回滚、卸载。
关于模板的更多操作请参见[模板概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0191.html)。
