Autopilot 概览


本页面介绍 Google Kubernetes Engine (GKE) 中的 Autopilot 运维模式,并为您提供可用于规划、设置和管理集群的资源。

什么是 Autopilot?

GKE Autopilot 是 GKE 中的一种运维模式,在此模式中,Google 管理集群配置,包括节点、扩缩、安全和其他预配置设置。Autopilot 集群经过优化,可以运行大多数生产工作负载,并可基于 Kubernetes 清单预配计算资源。此简化配置遵循集群和工作负载设置、可伸缩性以及安全性的 GKE 最佳实践和建议。如需查看内置设置的列表,请参阅 Autopilot 和 Standard 对照表

价格

在大多数情况下,您只需为在 GKE Autopilot 上运行的工作负载请求的 CPU、内存和存储空间付费。您无需为节点上未使用的容量付费,因为 GKE 会管理节点。

您无需为系统 Pod、操作系统费用或未安排的工作负载付费。如需详细了解价格信息,请参阅 Autopilot 价格

优势

  • 专注于应用:Google 会管理基础架构,因此您可以专注于构建和部署应用。
  • 安全性:集群具有默认的安全强化配置,默认启用许多安全设置。GKE 会根据您配置的维护时间表,在有安全补丁可用时自动应用于您的节点。
  • 价格:Autopilot 价格模式简化了结算预测和归因。
  • 节点管理:Google 会管理工作器节点,因此您无需创建新节点来容纳工作负载,也不需要配置自动升级和修复。
  • 扩缩:当您的工作负载遇到高负载并且您添加更多 Pod 来处理流量时(例如使用 Kubernetes Pod 横向自动扩缩),GKE 会自动为这些 Pod 预配新节点,并根据需要自动扩展现有节点中的资源。
  • 调度:Autopilot 会为您管理 Pod 装箱,因此您无需考虑每个节点上运行的 Pod 数量。您可以使用亲和性和 Pod 分布拓扑等 Kubernetes 机制进一步控制 Pod 的放置。
  • 资源管理:如果您部署工作负载而不设置 CPU 和内存等资源值,Autopilot 会自动设置预配置的默认值,并在工作负载级层修改资源请求。
  • 网络:Autopilot 默认启用一些网络安全功能,例如确保所有 Pod 网络流量通过 Virtual Private Cloud 防火墙规则,即使流量流向集群中的其他 Pod 也是如此。
  • 版本管理:所有 Autopilot 集群均在 GKE 发布渠道中注册,这可确保控制平面和节点在该渠道的最新合格版本上运行。
  • 代管式灵活性:如果您的工作负载具有特定的硬件或资源要求(例如高 CPU 或高内存),Autopilot 提供针对这类工作负载构建的预配置计算类。您可以在部署中请求计算类,而无需手动创建由自定义机器类型和硬件支持的新节点。您还可以选择 GPU 来加速批处理或 AI/机器学习应用等工作负载。
  • 降低运维复杂性:Autopilot 使您免于持续监控节点,它还可进行扩缩和安排运维,从而减少平台管理开销。

Autopilot 附带服务等级协议 (SLA),它同时涵盖 Pod 使用的控制平面和计算容量。

规划您的 Autopilot 集群

在创建集群之前,请规划和设计您的 Google Cloud 架构。在 Autopilot 中,您可以在工作负载规范中请求硬件。GKE 预配和管理相应的基础架构以运行这些工作负载。例如,如果您运行机器学习工作负载,则会请求硬件加速器。如果您开发 Android 应用,则需要请求 Arm CPU。

根据您的工作负载规模,规划和请求 Google Cloud 项目或组织的配额。只有在您的项目具有该硬件的配额时,GKE 才能为您的工作负载预配基础架构。

在规划期间,请考虑以下因素:

  • 估算的集群大小和规模
  • 工作负载类型
  • 集群布局和用量
  • 网络布局和配置
  • 安全配置
  • 集群管理和维护
  • 工作负载部署和管理
  • 日志记录和监控

以下部分提供了关于这些注意事项的信息和有用的资源。

网络

创建使用公共网络的 Autopilot 集群时,集群中的工作负载可以相互通信以及与互联网通信。这是默认的网络模式。Google Cloud 和 Kubernetes 提供了许多其他网络功能,您可以根据自己的应用场景利用这些功能,例如使用专用网络的集群。

Kubernetes 中和云中的网络非常复杂。在开始更改 Google Cloud 为您设置的默认值之前,请务必了解网络的基本概念。下表按照应用场景提供了各种资源,帮助您详细了解 GKE 中的网络:

使用场景 资源
了解 Kubernetes 和 GKE 中网络的工作原理

了解网络模型后,请考虑组织的网络和网络安全要求。选择符合这些要求的 GKE 和 Google Cloud 网络功能。

规划 GKE 网络配置

我们建议您了解 GKE 的网络配额,例如每个 Service 的端点数和 API 请求限制。以下资源可帮助您规划网络设置的具体方面:

公开您的工作负载
  • 如需将应用公开给互联网,请使用 Service,它使您可以将在一组 Pod 中运行的应用作为单个网络服务公开。
  • 如需配置工作负载以与 Google Cloud API 安全通信,请使用适用于 GKE 的工作负载身份联合
在多个集群中运行高可用性连接服务 使用多集群 Service (MCS)
对传入流量进行负载均衡
配置集群网络安全
  • 如需控制或阻止从公共互联网访问您的集群,请创建专用集群
  • 如需限制控制平面对特定 IP 地址范围的访问,请使用控制平面授权网络
  • 如需控制 IP 地址或端口级别的 Pod 流量,请使用网络政策。Autopilot 集群使用 GKE Dataplane V2 通过 eBPF 以低延迟路由数据包。
观察 Kubernetes 网络流量

扩缩

大规模高效运营平台需要规划和仔细的考量。您必须考虑设计的可扩缩性,即集群在实现服务等级目标 (SLO) 的同时扩大规模的能力。如需获取适用于平台管理员和开发者的详细指南,请参阅创建可扩缩集群的指南

您还应该考虑 GKE 配额和限制,尤其是在您计划运行可能包含数千个 Pod 的大型集群时。

扩缩 Autopilot 工作负载

在 Autopilot 中,GKE 根据集群中的 Pod 数量自动扩缩节点。如果集群没有正在运行的工作负载,Autopilot 可以将集群自动缩减到零个节点。 在大多数新创建的 Autopilot 集群中,您可能会注意到部署的第一批工作负载需要更多时间来安排。这是因为新的 Autopilot 集群在创建时最初没有任何可用节点,并一直等到您部署工作负载来预配更多节点。

如需自动扩缩集群中的 Pod 数量,我们建议您使用 Kubernetes Pod 横向自动扩缩等机制,该机制可以根据内置的 CPU 和内存指标或 Cloud Monitoring 中的自定义指标来扩缩 Pod。如需了解如何根据各种指标配置扩缩,请参阅根据指标优化 Pod 自动扩缩

安全

默认情况下,Autopilot 集群会启用并应用安全最佳实践和设置,包括强化集群安全性以及 GKE 安全概览中的许多建议。

如需详细了解 Autopilot 安全强化措施以及如何实现特定的安全性要求,请参阅 Autopilot 中的安全措施

创建集群

规划环境并了解自己的要求后,请创建 Autopilot 集群。 新的 Autopilot 集群是具有可公开访问的 IP 地址的区域级集群。每个集群都应用了基准安全强化措施,以及自动扩缩和其他功能。如需查看预配置功能的完整列表,请参阅比较 GKE Autopilot 和 GKE Standard

如果要创建没有公共 IP 地址的集群,请改为创建专用集群

在 Autopilot 上部署工作负载

如需将工作负载部署到正在运行的 Autopilot 集群,请编写 Kubernetes 清单并将其应用于集群。默认情况下,Autopilot 集群经过优化,可运行大多数生产工作负载。

如需查看 Google Cloud 控制台中用于部署和公开应用的互动式指南,请点击操作演示

操作演示

您的某些工作负载可能具有专用的硬件要求,例如需要硬件加速器的机器学习工作负载或需要 Arm 架构的移动应用测试。Google Cloud 为 Autopilot 配置了计算类,可运行具有特殊计算要求的工作负载。部署这些工作负载时,请在清单中请求计算类。Autopilot 会自动预配由专用机器支持的节点,管理调度和分配硬件。

下表显示了一些常见要求,并提供了有关应执行的操作的建议:

使用场景 资源
运行 Arm 工作负载 在清单中请求 Scale-Out 计算类和 arm64 架构。如需了解相关说明,请参阅在 Arm 架构上部署 Autopilot 工作负载
运行加速的 AI/机器学习工作负载 在您的清单中请求 GPU。如需了解相关说明,请参阅在 Autopilot 中部署 GPU 工作负载
运行需要高计算或内存容量的工作负载 请求 Balanced 计算类。如需了解说明,请参阅为 Autopilot Pod 选择计算类
运行需要更高效率的 CPU 容量和每核心单个线程计算的工作负载 请求 Scale-Out 计算类。如需了解说明,请参阅为 Autopilot Pod 选择计算类
以更低的费用运行容错工作负载(例如批量作业) 在清单中指定 Spot Pod。如需查看相关说明,请参阅在 Spot Pod 中以更低的费用运行容错工作负载。您可以将任何计算类或硬件配置与 Spot Pod 搭配使用。
运行需要最大限度地减少中断的工作负载,例如游戏服务器或工作队列 在 Pod 规范中指定 cluster-autoscaler.kubernetes.io/safe-to-evict=false 注解。Pod 可以防范节点自动升级或缩容事件导致的逐出长达七天。 如需查看相关说明,请参阅延长 Autopilot Pod 的运行时间
如果节点上的 Pod 资源请求总和中有可用的未使用资源,则允许工作负载爆发超过其请求。 将资源 limits 设置为高于 requests,或者不设置资源限制。如需了解相关说明,请参阅在 GKE 中配置 Pod 爆发

Autopilot 允许您为工作负载请求 CPU、内存和临时存储资源。允许的范围取决于您是要在默认的通用计算平台上还是在计算类上运行 Pod。

如需了解默认容器资源请求和允许的资源范围,请参阅 Autopilot 中的资源请求

工作负载分离

Autopilot 集群支持使用节点选择器和节点亲和性来配置工作负载分离。当您需要指示 GKE 将工作负载放置在满足特定条件的节点(例如自定义节点标签)上时,工作负载分离非常有用。例如,您可以指示 GKE 在具有 game-server 标签的节点上调度游戏服务器 Pod,并避免在这些节点上安排任何其他 Pod。

如需了解详情,请参阅在 GKE 中配置工作负载分离

使用可用区级拓扑在特定可用区中调度 Pod

如需将 Pod 放置在特定 Google Cloud 可用区中以执行访问可用区级 Compute Engine 永久性磁盘上的信息等操作,请参阅将 GKE Pod 放置在特定可用区中

Pod 相似性和反相似性

使用 Pod 亲和性和反亲和性将 Pod 共置在一个节点上,或让某些 Pod 避免使用其他 Pod。Pod 亲和性和反亲和性告知 Kubernetes 根据在特定拓扑网域(例如特定区域或可用区)中的节点上运行的 Pod 的标签来做出调度决策。例如,您可以指示 GKE 避免将前端 Pod 与其他前端 Pod 调度在同一节点上,以提高服务中断时的可用性。

如需了解相关说明和更多详情,请参阅 Pod 亲和性和反亲和性

在 GKE 中,您可以将 Pod 亲和性和反亲和性与 topologyKey 中的以下标签结合使用:

  • topology.kubernetes.io/zone
  • kubernetes.io/hostname

Pod 拓扑分布限制

在 Kubernetes 增加和减少 Pod 数量时,如需提高工作负载的可用性,您可以设置 Pod 拓扑分布限制。这将控制 Kubernetes 如何在拓扑网域(例如区域)内的节点上分布 Pod。例如,您可以指示 Kubernetes 在 us-central1 区域的三个 Google Cloud 可用区中布置特定数量的游戏服务器会话 Pod。

如需查看示例、更多详细信息和说明,请参阅 Pod 拓扑分布限制条件

管理和监控您的 Autopilot 集群

在 Autopilot 中,GKE 自动管理控制平面和工作器节点的集群升级和维护。Autopilot 集群还具有内置功能,用于监控集群和工作负载。

GKE 版本升级

所有 Autopilot 集群都在 GKE 发布渠道中注册。在发布渠道中,GKE 管理集群的 Kubernetes 版本,并在功能可用性和版本稳定性之间实现平衡,具体取决于渠道。 默认情况下,Autopilot 集群会在常规发布渠道中注册,但您可以选择满足稳定性和功能性需求的其他渠道。如需详细了解发布渠道,请参阅发布渠道简介

如果出现问题,GKE 会自动开始升级、监控进度并暂停操作。您可以通过以下方式手动控制升级过程:

  • 如需控制 GKE 何时可以自动升级,请创建维护窗口。 例如,您可以将维护窗口设置为多人游戏每周重置的晚上,这样玩家可以在重置时登录而不会中断。
  • 如需控制何时 GKE 无法在特定时间范围内开始自动升级,请使用维护排除项。 例如,您可以在黑色星期五和网购星期一促销活动期间设置维护排除项,以便您的客户可以顺利购物。
  • 如需在自动升级开始之前获取新版本,请手动升级控制平面。 GKE 会随着时间的推移将节点版本与控制平面版本保持一致。
  • 如需获取仅在较新发布渠道中提供的补丁版本,请参阅从较新渠道运行补丁版本。例如,您可能需要特定的补丁版本来缓解近期的漏洞披露。

监控 Autopilot 集群

Autopilot 集群已启用 Cloud Logging、Cloud Monitoring 和 Google Cloud Managed Service for Prometheus。

Autopilot 集群遵循 Google 的遥测收集最佳做法,自动收集以下类型的日志和指标:

Cloud Logging 的日志

  • 系统日志
  • 工作负载日志
  • 管理员活动审核日志
  • 数据访问审核日志

Cloud Monitoring 的指标

  • 系统指标
  • 工作负载指标(来自 Managed Service for Prometheus)

启用日志记录和监控功能无需进行其他配置。 下表显示了如何根据您的要求与收集的遥测数据进行交互:

使用场景 资源
了解和访问 GKE 日志
  • 如需了解我们自动收集的日志类型,请参阅收集哪些日志
  • 如需访问这些日志并使用 Google Cloud 控制台中的 Cloud Logging 界面,请参阅查看 GKE 日志
  • 如需了解可用于过滤 Kubernetes 系统和工作负载日志的示例查询,请参阅与 Kubernetes 相关的查询
  • 如需了解可用于过滤管理员活动和数据访问审核日志的示例查询,请参阅 GKE 审核日志记录信息
  • 如需为多租户环境配置日志(例如,当团队在单个 GKE 集群中具有特定命名空间,但每个团队都有自己的 Google Cloud 项目时),请参阅 GKE 上的多租户日志记录
观察 GKE 集群的性能

有效监控集群性能可帮助您优化集群和工作负载的运营费用。

  • 使用 Monitoring 中的 GKE 信息中心直观呈现集群的状态。如需了解详情,请参阅观察 GKE 集群
  • GKE 还在 Google Cloud 控制台中提供了一个可观测性信息中心。如需了解详情,请参阅查看可观测性指标
监控集群的安全状况 使用安全状况信息中心,根据 GKE 最佳做法审核正在运行的工作负载,扫描容器操作系统和语言包中的漏洞,并获取切实可行的缓解建议。如需了解详情,请参阅安全状况信息中心简介

问题排查

如需了解问题排查步骤,请参阅排查 Autopilot 集群问题

后续步骤