Autopilot 集群架构


集群是 Google Kubernetes Engine (GKE) 的基础,也就是说,代表容器化应用的 Kubernetes 对象都在集群上运行。

在自动试运行模式下,集群由高可用性控制层面和多台工作器机器组成,称为节点。这些控制层面和节点机器运行 Kubernetes 集群编排系统。 对于 AutoPilot 模式的集群,GKE 会管理集群的整个底层基础架构,包括控制层面、节点和所有系统组件。

下图展示了 GKE 中的 Autopilot 集群的架构:

GKE 会在控制层面中预配、维护和运营,并且仅预配节点。

控制层面

控制层面运行控制层面进程,包括 Kubernetes API 服务器、调度器和核心资源控制器。当您创建删除集群时,控制层面的生命周期由 GKE 管理。其中包括对控制层面上运行的 Kubernetes 版本的升级。GKE 会自动对 Autopilot 集群执行升级。

控制层面和 Kubernetes API

控制层面是集群的统一端点。与集群的所有互动都是通过 Kubernetes API 调用完成的,控制层面运行 Kubernetes API 服务器进程来处理这些互动请求。您可以通过 HTTP/gRPC 直接进行 Kubernetes API 调用,也可以通过从 Kubernetes 命令行客户端 (kubectl) 运行命令或者与 Cloud Console 中的界面进行交互来间接进行调用。

API 服务器进程是集群所有通信的中心。所有内部集群进程(例如集群节点、系统和组件、应用控制器)都充当 API 服务器的客户端;API 服务器是整个集群的单一数据源。

控制层面与节点的交互

控制层面负责决定在所有集群节点上运行的内容,其中可能包括调度工作负载(如容器化应用),以及管理工作负载的生命周期、扩缩和升级。此外,控制层面还会管理这些工作负载的网络和存储资源。

控制层面和节点也使用 Kubernetes API 进行通信。

控制与 Artifact Registry 和 Container Registry 的层面交互

当您创建或更新集群时,系统将从 pkg.dev Artifact Registry 或 gcr.io Container Registry 中拉取控制层面(和节点)上运行的 Kubernetes 软件的容器映像。影响这些注册表的中断可能会导致以下类型的故障:

  • 在服务中断期间无法创建新的集群。
  • 在服务中断期间无法升级集群。
  • 即使没有用户干预,也可能导致工作负载中断,具体取决于服务中断的具体性质和持续时间。

如果 pkg.dev Artifact Registry 或 gcr.io Container Registry 发生地区性服务中断,Google 可能会将请求重定向到不受中断影响的区域或地区。

如需查看 Google Cloud 服务的当前状态,请转到 Google Cloud 状态信息中心

节点

一个集群具有节点,即运行容器化应用和其他工作负载的工作器机器。Autopilot 管理节点,而控制层面接收各节点自我报告的状态更新。Autopilot 根据资源指定的所有工作负载和集群上的实际负载自动确定节点大小、节点类型和节点数量。对于 Autopilot 集群,您可以使用 kubectl describe nodes 命令查看节点,但无需管理这些节点或与之交互。与标准模式不同,节点无法通过 Compute Engine 或 gcloud compute instances list 命令查看。

操作系统映像

Autopilot 集群使用带有 containerd 的 Container-Optimized OS (cos_containerd) 来运行容器。