本页面介绍 Google Kubernetes Engine (GKE) 中的 Autopilot 运维模式,并为您提供可用于规划、设置和管理集群的资源。
本页面适用于定义 IT 解决方案和系统架构的管理员、架构师和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
什么是 Autopilot?
GKE Autopilot 是 GKE 中的一种运维模式,在此模式中,Google 管理集群配置,包括节点、扩缩、安全和其他预配置设置。Autopilot 集群经过优化,可以运行大多数生产工作负载,并可基于 Kubernetes 清单预配计算资源。此简化配置遵循集群和工作负载设置、可伸缩性以及安全性的 GKE 最佳实践和建议。如需查看内置设置的列表,请参阅 Autopilot 和 Standard 对照表。
使用 Autopilot 可获得全托管式 Kubernetes 体验。
价格
在大多数情况下,您只需为在 GKE Autopilot 上运行的工作负载请求的 CPU、内存和存储空间付费。您无需为节点上未使用的容量付费,因为 GKE 会管理节点。请注意,当您在特定计算类(让 Pod 使用节点虚拟机 [VM] 的全部资源容量)上运行 Pod 时,此定价模型存在例外情况。
您无需为系统 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 (MCS)。 |
对传入流量进行负载均衡 |
|
配置集群网络安全 | |
观察 Kubernetes 网络流量 | 默认情况下,Autopilot 会使用 GKE Dataplane V2 来获取指标和可观测性。
|
扩缩
大规模高效运营平台需要规划和仔细的考量。您必须考虑设计的可扩缩性,即集群在实现服务等级目标 (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 中,您可以在 topologyKey
中使用 Pod 相似性和反相似性以及以下标签:
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 日志 |
|
观察 GKE 集群的性能 | 有效监控集群性能可帮助您优化集群和工作负载的运营费用。 |
监控集群的安全状况 | 使用安全状况信息中心,根据 GKE 最佳做法审核正在运行的工作负载,扫描容器操作系统和语言包中的漏洞,并获取切实可行的缓解建议。如需了解详情,请参阅安全状况信息中心简介。 |
问题排查
如需了解问题排查步骤,请参阅排查 Autopilot 集群问题。