本页面介绍在多个 GKE 集群上管理大型工作负载时可以遵循的最佳实践。这些最佳实践涵盖跨多个项目分配工作负载和调整所需配额的注意事项。
在多个 Google Cloud 项目中分配 GKE 工作负载的最佳实践
为了根据您的业务需求更好地定义 Google Cloud 项目结构和 GKE 工作负载分配,我们建议您考虑以下设计和规划操作:
- 遵循管理云资源最佳实践,对组织的文件夹和项目结构进行初始决策。Google Cloud 建议使用文件夹和项目等资源层次结构元素,根据您自己的组织边界或访问权限政策来拆分工作负载。
- 考虑您是否因为项目配额而需要拆分工作负载。Google Cloud 使用每个项目的配额来限制共享资源的使用。您需要遵循下述建议,并为大型工作负载调整项目配额。对于大多数工作负载,您应该能够在单个项目中实现所需的更高配额。这意味着配额不应该是在多个项目之间拆分工作负载的主要驱动因素。使工作负载分布在较少的项目中可以简化配额和工作负载的管理。
- 考虑您是否计划运行非常大的工作负载(数十万或更多 CPU)。在这种情况下,将工作负载拆分到多个项目中可以提高云资源(如 CPU 或 GPU)的可用性。之所以会这样是因为使用了可用区虚拟化的优化配置。在这种情况下,请与您的客户经理联系,以获得特殊支持和建议。
调整大型 GKE 工作负载配额的最佳实践
本部分介绍调整 GKE 工作负载使用的 Google Cloud 资源配额的准则。请根据以下准则调整项目的配额。如需了解如何使用 Google Cloud 控制台管理配额,请参阅使用配额。
Compute Engine 配额和最佳实践
在 Autopilot 和 Standard 模式下运行的 GKE 集群使用 Compute Engine 资源运行工作负载。与由 Google Cloud 内部管理的 Kubernetes 控制平面资源不同,您可以管理和评估工作流使用的 Compute Engine 配额。
资源和 API 的 Compute Engine 配额由同一项目和区域中托管的所有 GKE 集群共享。相同的配额还会与其他(与 GKE 无关的)Compute Engine 资源(例如独立虚拟机实例或实例组)共享。
默认配额值可支持数百个工作器节点,对于更大的工作负载则需要进行调整。但是,作为平台管理员,您可以主动调整 Compute Engine 配额,以确保您的 GKE 集群有足够的资源。在评估或调整配额值时,您还应考虑未来的资源需求。
GKE 工作器节点使用的 Compute Engine 资源的配额
下表列出了 GKE 工作器节点使用的最常见的 Compute Engine 资源的配额。这些配额是按项目和区域配置的。配额必须能够满足您的工作负载使用的 GKE 工作器节点以及与 GKE 无关的其他 Compute Engine 资源的总大小上限。
资源配额 | 说明 |
---|---|
CPU | 所有集群的所有工作器节点使用的 CPU 数量。 |
CPU 类型 | 所有集群的所有工作器节点使用的每种特定类型的 CPU 的数量。 |
虚拟机实例 | 所有工作器节点的数量。此配额会自动计算为 CPU 数量的 10 倍。 |
每个 VPC 网络的实例数 | 连接到 VPC 网络的所有工作器节点的数量。 |
永久性磁盘(标准,单位为 GB) | 挂接到所有工作器节点的标准永久性启动磁盘的总大小。 |
永久性磁盘(固态硬盘,单位为 GB) | 挂接到所有工作器节点的固态硬盘型永久性启动磁盘的总大小。 |
本地固态硬盘 (GB) | 挂接到所有工作器节点的本地固态硬盘型临时磁盘的总大小。 |
请确保也调整工作负载可能需要的资源(例如 GPU、IP 地址或抢占式资源)使用的配额。
Compute Engine API 调用的配额
大型或可扩缩集群需要更多 Compute Engine API 调用。GKE 会在以下活动期间进行这些 Compute Engine API 调用:
- 检查计算资源的状态。
- 在集群中添加新节点或移除新节点。
- 添加或移除新节点池。
- 定期为资源添加标签。
在规划大型集群架构时,我们建议您执行以下操作:
- 观察历史配额消耗情况。
- 根据需要调整配额,同时保持合理的缓冲区。您可以参考以下最佳实践建议,并在此基础上根据工作负载需求调整配额。
- 由于配额是按区域配置的,因此请仅在您计划运行大型工作负载的区域中调整配额。
下表列出了 Compute Engine API 调用的配额。这些配额按项目在每个区域中独立配置。配额由同一项目和同一区域中托管的所有 GKE 集群共享。
API 配额 | 说明 | 最佳做法 |
---|---|---|
每个区域每分钟的查询数 | GKE 使用这些调用来检查各种计算资源的状态。 |
对于包含数百个动态节点的项目和区域,请将此值调整为 3,500。 对于包含数千个高度动态节点的项目和区域,请将此值调整为 6,000。 |
每个区域每分钟的读取请求数 | GKE 使用这些调用来监控虚拟机实例(节点)的状态。 |
对于包含数百个节点的项目和区域,请将此值调整为 12,000。 对于包含数千个节点的项目和区域,请将此值调整为 20,000。 |
每个区域每分钟的列出请求数 | GKE 使用这些调用来监控实例组(节点池)的状态。 |
对于包含数百个动态节点的项目和区域,请勿更改默认值,因为它足够了。 对于在多个节点池中包含数千个高度动态节点的项目和区域,请将此值调整为 2,500。 |
每个区域每分钟的实例列出引荐来源请求数 | GKE 使用这些调用来获取有关运行虚拟机实例(节点)的信息。 |
对于包含上千个高度动态节点的项目和区域,请将此值调整为 6,000。 |
每个区域每分钟的操作读取请求数 | GKE 使用这些调用来获取有关正在进行的 Compute Engine API 操作的信息。 |
对于包含上千个高度动态节点的项目和区域,请将此值调整为 3,000。 |
Cloud Logging API 和 Cloud Monitoring API 配额和最佳实践
根据您的集群配置,在 GKE 集群上运行的大型工作负载可能会生成大量诊断信息。如果超出 Cloud Logging API 或 Cloud Monitoring API 配额,日志记录和监控数据可能会丢失。我们建议您配置日志的详细程度,并调整 Cloud Logging API 和 Cloud Monitoring API 配额以捕获生成的诊断信息。 Managed Service for Prometheus 会使用 Cloud Monitoring 配额。
由于每个工作负载各不相同,我们建议您执行以下操作:
- 观察历史配额消耗情况。
- 根据需要调整配额或调整日志记录和监控配置。为意外问题保留合理的缓冲。
下表列出了 Cloud Logging API 和 Cloud Monitoring API 调用的配额。这些配额是按项目配置的,并由同一项目中托管的所有 GKE 集群共享。
Service | 配额 | 说明 | 最佳做法 |
---|---|---|---|
Cloud Logging API | 每分钟写入请求数 | 在将条目添加到 Cloud Logging 中存储的日志文件时,GKE 会使用此配额。 |
日志插入速率取决于集群中的 pod 生成的日志数量。根据 Pod 数、应用日志记录的详细程度和日志记录配置来增加配额。 如需了解详情,请参阅管理 GKE 日志。 |
Cloud Monitoring API | 每分钟的时序注入请求数 |
将 Prometheus 指标发送到 Cloud Monitoring 时,GKE 会使用此配额:
|
根据需要监控和调整此配额。 如需了解详情,请参阅管理 GKE 指标。 |
GKE 节点配额和最佳实践
GKE 在单个集群中最多支持 15,000 个节点,默认配额设置为 5,000 个节点。此配额是针对每个 GKE 集群单独设置的,而不是像其他配额那样针对于每个项目。如果您计划将集群扩展到 5,000 个节点以上,请执行以下步骤:
- 确定想要扩展到 5,000 个节点以上的集群。
- 确保工作负载在扩展后保持在集群限制和 GKE 配额范围内。
- 确保提高 Compute Engine 配额,以满足扩展后的工作负载的要求。
- 确保集群的可用性类型为区域级,且网络隔离为专用。
- 创建支持服务工单申请增加每个集群的节点数量配额。
GKE 团队将与您联系,确保您的工作负载遵循可扩缩性最佳实践并且准备好在单个集群上扩展到 5,000 个节点以上。
避免大型工作负载的其他限制的最佳实践
每个位置每个网络使用 VPC 网络对等互连的集群数量限制
在每个位置(可用区和区域被视为不同的位置)的同一 VPC 网络中,您最多可以创建 75 个使用 VPC 网络对等互连的专用集群。尝试创建超出此限制的更多集群将失败,并显示类似于以下内容的错误:
CREATE operation failed. Could not trigger cluster creation:
Your network already has the maximum number of clusters: (75) in location us-central1.
GKE 专用集群使用 VPC 网络对等互连在 Kubernetes API Server(由 Google 管理)与仅具有内部地址的专用节点之间提供内部通信。
如需解决此问题,您可以使用基于 Private Service Connect (PSC) 连接的集群。使用 PSC 连接的集群提供与专用集群相同的隔离,并且没有 75 个集群的限制。基于 PSC 的集群不使用 VPC 网络对等互连,不受 VPC 对等互连数量限制的影响。
您可以按照重复使用 VPC 网络对等互连中提供的说明来确定您的集群是否使用 VPC 网络对等互连。
为避免在创建新集群时达到限制,请执行以下步骤:
- 在创建集群期间使用
no-enable-private-nodes
参数创建 PSC 集群。 - 对每个节点池使用
enable-private-nodes
参数,将节点池的隔离配置为专用。 - (可选)在集群级层使用
enable-private-endpoint
参数为控制平面配置隔离。如需了解详情,请参阅更改集群隔离。
或者,您可以与 Google Cloud 支持团队联系,申请提高最多只能有 75 个专用集群使用 VPC 网络对等互连的限制。我们会根据具体情况评估此类申请,如果可提高此限制,将应用个位数的增长。
后续步骤
- 请观看介绍构建大型 GKE 集群的视频。