Config Connector 最佳实践
本页介绍了在使用 Config Connector 时应考虑的最佳实践。
管理 API 配额限制
如果您遇到错误,表明已超出 API 配额限制,则可能是因为您在同一配额项目下创建了过多的同类 Config Connector 资源。当您创建大量资源时,这些资源可能会生成过多的 API 向同一个 API 端点发送请求,因为 对账策略 Config Connector 所用的资源
解决此问题的一种方法是申请增加配额。除了配额之外 如果您确认配额错误是由 GET 请求导致的 (针对由 Config Connector 管理的 Google Cloud 资源) 那么您可以考虑采用以下方案之一:
- 扩大 Config Connector 资源
- 将资源拆分到多个项目中
- 将 Config Connector 切换到命名空间模式
延长对账间隔时间
您可以延长 Config Connector 对资源进行协调的时间,以免超出 API 配额。建议将对账间隔设置为 1 小时。
要增加对账间隔,请按照 配置协调时间间隔。
将资源拆分为多个项目
这种方法会将您的 Config Connector 资源分布到不同的
项目。在添加新资源时,此方法非常适用,但拆分现有资源可能会有风险,因为您需要删除现有资源,然后在其他项目下重新创建这些资源。删除资源可能会导致某些类型的资源(例如 SpannerInstance
或 BigtableTable
资源)的数据丢失。您应该先备份数据,然后再将其删除。
如需将现有的 Config Connector 资源拆分到不同的项目中,请完成 执行下列步骤:
- 确定您计划将哪些 Config Connector 资源迁移到 项目。
- 删除 Config Connector 资源。确保
cnrm.cloud.google.com/deletion-policy
注解未设置为abandon
。 - 更新您计划迁移到新项目的 Config Connector 资源的 YAML 配置中的
spec.projectRef
字段或cnrm.cloud.google.com/project-id
注解。 - 向 Config Connector 使用的 IAM 服务账号授予对新项目的适当权限。
- 将更新后的 YAML 配置应用到 创建 Config Connector 资源。
切换到命名空间模式
您可以绑定 Google Cloud 项目复制到 Config Connector 所在的不同命名空间 安装在 命名空间型模式 并将资源拆分到不同的命名空间中为此, 请完成以下步骤:
将 Config Connector 配置为在命名空间模式下运行。 从不同的项目创建新的 IAM 服务账号,并按照为每个项目配置 Config Connector 的说明将其绑定到不同的命名空间。
向新的 IAM 服务账号授予适当的权限 资源所属的项目。
确定您计划将哪些 Config Connector 资源迁移到其他命名空间。
更新 Config Connector 资源的 YAML 配置,并设置
cnrm.cloud.google.com/deletion-policy
注解abandon
。应用更新后的 YAML 配置,以更新 Config Connector 资源的删除政策。
更新 YAML 配置中的
metadata.namespace
字段, 您计划移动到其他命名空间的 Config Connector 资源。将更新后的 YAML 配置应用到 获取放弃的资源。
管理 GKE 集群中的节点池
如果您在 Config Connector 中应用 ContainerCluster
资源创建集群,然后尝试通过应用更新后的 ContainerCluster
配置更新 nodeConfig
或其他与节点相关的字段,可能会遇到错误。这些错误是由于 nodeConfig
、nodeConfig.labels
、nodeConfig.taint
等不可变字段而导致的,这是底层 Google Cloud API 的技术限制。
如果您需要更新这些字段,可以使用
ContainerNodePool
用于管理这些字段不可更改的节点池的资源。如需使用 ContainerNodePool
资源管理节点池,您必须指定注解 cnrm.cloud.google.com/remove-default-node-pool: "true"
。这个
注解移除在集群期间创建的默认节点池
创建过程。然后,如需创建单独的节点池,请在 ContainerNodePool
中(而非 ContainerCluster
中)指定 nodeConfig
字段。请参阅
ContainerNodePool
资源示例
以供参考。
您应为 ContainerCluster
和 ContainerNodePool
资源设置注解 cnrm.cloud.google.com/state-into-spec: absent
。这个
注解可以避免模型之间的互动过程中可能发生的对账错误
Config Connector 控制器和底层 API。
以下示例展示了设置了这些注解的 ContainerCluster
和 ContainerNodePool
配置:
apiVersion: container.cnrm.cloud.google.com/v1beta1 kind: ContainerCluster metadata: name: containercluster-sample annotations: cnrm.cloud.google.com/remove-default-node-pool: "true" cnrm.cloud.google.com/state-into-spec: absent spec: description: A sample cluster. location: us-west1 initialNodeCount: 1
apiVersion: container.cnrm.cloud.google.com/v1beta1 kind: ContainerNodePool metadata: labels: label-one: "value-one" name: containernodepool-sample annotations: cnrm.cloud.google.com/state-into-spec: absent spec: location: us-west1 autoscaling: minNodeCount: 1 maxNodeCount: 3 nodeConfig: machineType: n1-standard-1 preemptible: false oauthScopes: - "https://www.googleapis.com/auth/logging.write" - "https://www.googleapis.com/auth/monitoring" clusterRef: name: containercluster-sample