趋近智
每个 Kubernetes 集群的核心都是控制平面。可以把它看作操作的中枢,负责管理集群状态、做出调度决策以及响应事件。它确保您的应用程序和集群本身按照您预期的状态运行。控制平面不直接运行您的应用程序容器;该任务交由工作节点完成。相反,它从中心指挥点对它们进行编排。
控制平面不是一个单一的进程,而是多个协同工作的独立组件集合。虽然您通常通过单一的 API 与集群交互,但这些组件就在幕后工作,每个组件都有特定的职责。让我们看看构成控制平面的主要组件。
API 服务器是 Kubernetes 控制平面的入口。与集群的所有交互,无论是来自运行 kubectl 的用户、脚本还是另一个控制平面组件,都要经过 API 服务器。它充当网关,执行三个主要功能:
etcd 通信的组件。它从 etcd 读取集群的当前状态,并在验证请求后,将新的期望状态写回其中。由于它是所有通信的中心枢纽,API 服务器被设计为一个无状态、可水平扩展的 REST 服务。所有修改集群状态的请求在持久化之前都会在此处理。
如果说 API 服务器是入口,那么 etcd 就是集群的官方记录本。它是一个一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后端存储。您在 Kubernetes 中创建的每个对象(例如 Pod、Deployment 或 Service)都表现为 etcd 中的一个条目。
它是整个集群的单一事实来源。当您向 API 服务器查询 Pod 的状态时,API 服务器会从 etcd 中检索该信息。当调度器决定将 Pod 放置在特定节点上时,它会通知 API 服务器,然后 API 服务器将该决定记录在 etcd 中。
对于生产集群,etcd 通常以 3 或 5 个节点的集群形式运行,以确保高可用性和数据持久性。这种冗余设计可以防止在单个控制平面节点发生故障时丢失集群状态。
调度器有一项特定的职责:它决定哪个工作节点应该运行新创建的 Pod。它实际上并不运行容器;它只负责做出位置决策。
调度过程涉及对每个需要调度的 Pod 执行两步操作:
决策完成后,调度器会通知 API 服务器,API 服务器随后在 etcd 中用分配的节点名称更新 Pod 的定义。然后,目标节点上的 Kubelet 接管并运行该 Pod。
控制器管理器是主动将集群的“当前状态”推向“期望状态”的组件。它是一个包含多个控制器进程的单一二进制文件,每个进程负责管理集群的一个特定方面。
每个控制器都按照“调解循环”模式运行:
例如,ReplicaSet 控制器监控 ReplicaSet 对象。如果一个 ReplicaSet 规定它应该有三个 Pod 副本,但控制器只看到两个在运行,它将与 API 服务器通信以创建第三个副本。如果它看到四个,它将终止一个。
捆绑在控制器管理器中的其他组件包括:
Kubernetes 控制平面内的通信流程。API 服务器作为中心网关,协调所有其他组件之间的交互,并将集群状态持久化在 etcd 中。
在许多现代部署中,Kubernetes 运行在 AWS、Google Cloud 或 Azure 等云提供商上。为了与这些云平台的特定功能集成,Kubernetes 使用了云控制器管理器。
此组件运行特定于云提供商的控制器。例如,如果您在云环境中创建一个 LoadBalancer 类型的 Service,云控制器管理器中的一个控制器将与云提供商的 API 交互,以配置实际的负载均衡器并将其设置为将流量路由到您的 Pod。通过将此逻辑从核心的 kube-controller-manager 中分离出来,Kubernetes 保持了云中立性,同时允许与底层基础设施紧密结合。
这些组件共同构成了一个灵活且可扩展的系统,用于管理容器化应用程序。虽然您大部分时间都会通过 kubectl 与 API 服务器交互,但了解调度器、etcd 和控制器管理器的作用,为解决问题和设计有效的应用程序部署提供了稳固的基础。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造