Config Controller 可伸缩性准则

本页面提供了一些建议,以帮助您规划 Config Controller 实例上的配置管理架构,并确保 Google Cloud 资源创建和管理不超出服务等级目标 (SLO)。

可伸缩性目标

Config Controller 可伸缩性目标是指由 Google 进行测试并使用 Config Sync GitOps 的资源组。这些目标可帮助您规划配置管理架构。

这些目标并非硬性限制。扩展一种资源种类不一定会导致 Config Controller 实例不可用,但可能会减少您可以部署的同一 Config Controller 实例中其他资源种类的总数。

本页中的表格仅供参考,并不详尽。

单个命名空间

以下示例展示了一个集群中有一个 Config Connector 命名空间的 Config Controller 实例。Config Connector 可以在该命名空间中创建和管理以下数量的资源:

资源类型

建议的上限

SQLInstance

450

SQLDatabase

2250

SQLUser

2500

StorageBucket

5000

ContainerCluster

50

ContainerNodepool

200

IAMServiceAccount

2500

IAMPartialPolicy

7500

多个命名空间

以下示例展示了一个集群中具有 50 个 Config Connector 命名空间的 Config Controller 实例。Config Connector 可以在每个命名空间中创建和管理以下数量的资源:

资源类型

建议的上限

SQLInstance

9

SQLDatabase 45
SQLUser 45
StorageBucket 100
ContainerCluster 1
ContainerNodepool 4
IAMServiceAccount 50
IAMPartialPolicy 150

Config Connector 命名空间

默认情况下,配置控制器使用 Config Connector 命名空间型模式。下表显示了一个示例,说明单个 Config Connector 实例中可以拥有的 Config Connector 命名空间数量。

--cluster-ipv4-cidr-block

节点数

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。

后续步骤