本页面提供了一些建议,可帮助您规划 Config Controller 实例上的配置管理架构,并确保您的 Google Cloud 资源创建和管理符合服务等级目标 (SLO)。
本页面适用于管理底层技术基础架构生命周期以及规划容量和基础架构需求的管理员、架构师和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
使用命名空间模式
我们建议您在命名空间模式下使用 Config Connector,因为这样可以更轻松地管理大量资源。您可以将每个命名空间设置为与单个命名空间相对应,这样有助于管理配额和配置,因为资源在每个项目中都有读写配额。从 1.119.0 版开始,您可以按命名空间提高协调速率限制。通过提高速率限制,您可以允许在 10 分钟的间隔时间内对每个命名空间协调超过 10,000 个资源。Config Connector 和 Config Sync 都支持命名空间模式,该模式允许将每个命名空间映射到单个 Google Cloud 项目。
可伸缩性目标
下表显示了我们定期测试的值。我们知道 Config Connector 可以处理较大的数量。我们已证明可以在单个命名空间中管理 30,000 个资源。不过,实现这一点需要进行一些调优。我们建议您查看命名空间模式,了解有关这些更改的建议。
Config Controller 可伸缩性目标是指由 Google 进行测试并使用 Config Sync GitOps 的资源组。这些目标可帮助您规划配置管理架构。
这些目标并非硬性限制。增加某种资源类型的数量并不一定会导致 Config Controller 实例不可用,但可能会减少您可以在同一 Config Controller 实例中部署的其他资源类型的总数量。
本页面中的表仅供参考,并非详尽无遗。
单个命名空间
以下示例展示了集群中具有一个 Config Connector 命名空间的 Config Controller 实例。Config Connector 可以在该命名空间中创建和管理以下数量的资源:
资源类型 |
建议的上限 |
|
450 |
|
2250 |
|
2500 |
|
5000 |
|
50 |
|
200 |
|
2500 |
|
7500 |
多个命名空间
以下示例展示了集群中具有 50 个 Config Connector 命名空间的 Config Controller 实例。Config Connector 可以在每个命名空间中创建和管理以下数量的资源:
资源类型 |
建议的上限 |
|
9 |
SQLDatabase |
45 |
SQLUser |
45 |
StorageBucket |
100 |
ContainerCluster |
1 |
ContainerNodepool |
4 |
IAMServiceAccount |
50 |
IAMPartialPolicy |
150 |
Config Connector 命名空间
Config Controller 默认情况下使用 Config Connector 命名空间模式。以下表显示了一个示例,说明单个 Config Connector 实例中可以包含的 Config Connector 命名空间数量。
|
节点数 |
Config Connector 命名空间的数量 |
/18 |
64 |
600 |
/19 |
32 |
300 |
/20(默认值和推荐值) |
16 |
120 |
/21 |
8 |
60 |
检查可伸缩性目标
您可以使用以下资源来帮助确定自己是否已达到可伸缩性目标。
Google Cloud API 配额
您可以在 Google Cloud 控制台中查看 Google Cloud API 配额。当某些配额接近其限制时,请考虑按 Google Cloud 项目拆分 API 配额。如需详细了解如何监控配额指标并发出提醒,请参阅监控配额指标并发出提醒。
Config Connector 内存用量
您可以在 GKE 监控信息中心内查看 Config Connector 内存用量。当 Config Connector 的内存用量接近其限制时,请考虑按命名空间进行分片。
扩容 Config Controller
如果已达到可扩缩目标,则应考虑进一步纵向扩容 Config Controller 实例。本部分概述了可用于扩容 Config Controller 实例的各种方法。
按命名空间进行分片
如果您使用单个 Config Connector 命名空间来实现可扩缩性目标,则可以配置 Config Connector 以管理命名空间中的资源。
每个命名空间都使用自己的服务账号和操作员工作负载,这使 Config Connector 能够大规模管理您的资源。如果您使用一个 Config Connector 实例管理多个 Google Cloud 项目,则可以使用一个 Config Connector 命名空间管理每个 Google Cloud 项目。
按 Google Cloud 项目拆分 API 配额
如果您因达到 Google Cloud API 配额而达到可扩缩性目标,则可以将不同 Google Cloud 项目拥有的不同 IAM 服务账号绑定到以命名空间模式安装 Config Connector 的不同命名空间。然后,您可以将资源拆分到不同的项目。
按 Config Connector 实例进行分片
如果您使用多个 Config Connector 命名空间来实现可伸缩性目标,则可以创建和使用多个 Config Controller 实例。借助多个 Config Controller 实例,您可以对资源配置管理进行分片,例如按组织内的不同开发环境、应用团队或 GitOps 目录进行分片。
其他可伸缩性注意事项
Google Cloud API 配额
如果您遇到错误,表明已超出 API 配额限制,则您可能在同一项目下创建了过多的同类 Config Connector 资源。由于 Config Connector 中的协调策略,这些资源可能会针对同一 API 端点生成过多的 API 请求。
如需解决此问题,您可以按 Google Cloud 项目拆分 API 配额,也可以请求提高配额限制。
GKE 限制
由于 Config Controller 基于 GKE 构建,因此您应考虑 GKE 的一些限制。以下部分介绍与 Config Controller 相关的特定注意事项。如需详细了解适用于大型 GKE 集群的一般限制和最佳实践,请参阅规划大型 GKE 集群。
Kubernetes 服务账号限制
在单个 GKE 集群中创建的 Kubernetes 服务账号 (KSA) 的数量不应超过 3,000,因为您可能会遇到 gke-metadata-server
Pod 崩溃问题。
每当添加一个 Config Connector 命名空间时,它还会创建一个 Kubernetes 服务账号。
GKE 控制平面性能问题
如果 Config Controller 实例包含过多的 Config Connector 命名空间,则 GKE 集群的控制平面可能会出现性能问题。您应将每个集群的 Config Connector 命名空间数量限制在 500 个以下。
每当您添加一个 Config Connector 命名空间时,它还会创建一个控制器 Pod。
后续步骤
- 了解如何将 Config Controller 分片
- 获取有关排查 Config Controller 问题方面的帮助