GKE 集群架构


本页面介绍 Google Kubernetes Engine (GKE) 集群的架构。您的容器化 Kubernetes 工作负载都在 GKE 集群中运行。

本页面适用于定义 IT 解决方案和系统架构的管理员、架构师和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务

GKE 集群由控制平面和称为节点的工作器机器组成。控制平面和节点构成 Kubernetes 集群编排系统。GKE Autopilot 管理集群的整个底层基础架构,包括控制平面、节点和所有系统组件。 如果您使用 GKE Standard 模式,则 GKE 会管理控制平面和系统组件,而您管理节点。 下图显示了 GKE 集群的架构:

GKE 集群架构。控制平面由 GKE 管理,并运行 API 服务器、资源控制器、调度器和集群存储。这些节点在 Autopilot 模式下由 GKE 管理,在标准模式下由用户管理。用户 Pod 在节点中运行容器。可以使用其他 Google Cloud 服务与 GKE 集成。

关于控制平面

控制平面运行 Kubernetes API 服务器、调度器和核心资源控制器等进程。GKE 管理从集群创建到删除的控制平面生命周期。其中包括对控制平面上运行的 Kubernetes 版本的升级。该升级将由 GKE 自动执行;如果您希望提前升级,而不按计划自动升级,可以请求手动执行。

控制平面和 Kubernetes API

控制平面是集群的统一端点。您可以通过 Kubernetes API 调用与控制平面进行交互。控制平面运行 Kubernetes API 服务器进程 (kube-apiserver) 以处理 API 请求。您可以通过以下方式进行 Kubernetes API 调用:

  • 直接调用:HTTP/gRPC
  • 间接调用:Kubernetes 命令行客户端(例如 kubectl)或 Google Cloud 控制台。

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

您的 API 请求告诉 Kubernetes 集群中对象的所需状态。Kubernetes 会尝试持续维持该状态。Kubernetes 支持您以命令方式或声明方式配置 API 中的对象。

如需详细了解 Kubernetes 中的对象管理,请参阅以下页面:

控制平面与节点的交互

控制平面管理集群的所有节点上运行的内容。控制平面安排工作负载并管理工作负载的生命周期、扩缩和升级。此外,控制平面还会管理这些工作负载的网络和存储资源。控制平面和节点使用 Kubernetes API 相互通信。

控制平面与 Artifact Registry 的互动

当您创建或更新集群时,GKE 会从 pkg.dev Artifact Registry 或 gcr.io Container Registry 中拉取控制平面和节点上运行的 Kubernetes 系统软件的容器映像。如果发生影响这些注册表的中断,以下操作可能会失败:

  • 创建新集群
  • 集群版本升级

即使没有您的干预,也可能导致工作负载中断,具体取决于服务中断的具体性质和持续时间。

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

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

最佳实践

跨多个区域部署,以便在区域发生服务中断期间使应用保持可用。

关于节点

节点是运行容器化应用和其他工作负载的工作器机器。各个机器是 GKE 创建的 Compute Engine 虚拟机 (VM)。控制平面管理和接收每个节点自我报告状态的更新。

节点运行支持容器(容器构成了集群的工作负载)所必需的服务。这些服务包括运行时和 Kubernetes 节点代理 (kubelet);该节点代理会与控制平面通信,并负责启动和运行被调度到该节点上的容器。

GKE 还运行多个系统容器,这些容器作为每个节点的代理(称为 DaemonSet)运行,可提供日志收集和集群内网络连接等功能。

最佳实践

请对容器化应用使用 stdout,因为 stdout 可让您的平台处理应用日志

节点管理因集群操作模式而异,如下所示:
节点组件 AutoPilot 模式 标准模式
生命周期

由 GKE 完全托管,包括:

GKE 管理以下各项:

您可以管理以下各项:

可见性 使用 kubectl 查看节点。无法通过 gcloud CLI 或 Google Cloud 控制台查看或访问的底层 Compute Engine 虚拟机。 使用 kubectl、gcloud CLI 和 Google Cloud 控制台查看节点。查看和访问底层 Compute Engine 虚拟机。
连接 不直接连接至底层虚拟机。 使用 SSH 连接至底层虚拟机。
节点操作系统 (OS) 由 GKE 管理。 所有节点都使用包含 containerd 的 Container-Optimized OS (cos_containerd) 为节点选择操作系统
机器硬件选择

根据用例请求 Pod 中的计算类

GKE 管理机器配置、调度、数量和生命周期。

创建节点池时选择并配置 Compute Engine 机器类型。根据需要配置大小调整、扩缩、数量、调度和位置的设置。