配置容器资源和副本


本页介绍了如何在 Config Connector 中为控制器配置容器资源和副本。

为 Config Connector 控制器容器配置资源分配

在 Config Connector 1.106 及更高版本中,您可以配置分配给 Config Connector 控制器 Pod 中的容器的 CPU 和内存 (RAM) 资源。您可以配置以下控制器:

  • cnrm-webhook-manager
  • cnrm-controller-manager
  • cnrm-deletiondefender
  • cnrm-resource-stats-recorder
  • cnrm-unmanaged-detector(Config Connector 1.108 及更高版本)

例如,您可以通过创建和应用以下示例 YAML 文件,配置 cnrm-webhook-manager 控制器的 webhook 容器的内存请求和限制。

  1. 创建一个名为 configure-webhook-manager.yaml 的文件并将以下 YAML 复制到其中:

    apiVersion: customize.core.cnrm.cloud.google.com/v1beta1
    kind: ControllerResource
    metadata:
      name: cnrm-webhook-manager
    spec:
      containers:
        - name: webhook
          resources:
            limits:
              memory: 512Mi
            requests:
              memory: 256Mi
    
  2. 使用 kubectl apply 将容器资源配置应用于您的集群:

    kubectl apply -f configure-webhook-manager.yaml
  3. 运行以下命令,验证配置是否成功:

    kubectl get controllerresource cnrm-webhook-manager -o jsonpath='{.status.healthy}'

    它应该会显示设为 truestatus.healthy 字段。

  4. 验证新的自定义资源配置是否已应用于 webhook 容器。

    kubectl get deployment cnrm-webhook-manager -n cnrm-system -o jsonpath='{.spec.template.spec.containers[?(@.name=="webhook")].resources}'

    创建和重新创建 Pod 可能需要几分钟时间。

如果 Config Connector 配置为在命名空间模式下运行,您必须使用 NamespacedControllerResource 自定义资源为指定命名空间中的 cnrm-controller-manager 控制器配置容器资源。Config Connector 1.108 及更高版本启用了命名空间型控制器的容器资源配置。以下 YAML 文件显示了一个示例配置:

apiVersion: customize.core.cnrm.cloud.google.com/v1beta1
kind: NamespacedControllerResource
metadata:
  name: cnrm-controller-manager # name should not contain the namespace ID suffix
  namespace: NAMESPACE
spec:
  containers:
    - name: manager
      resources:
        limits:
          cpu: 200m
          memory: 512Mi
        requests:
          cpu: 100m
          memory: 256Mi

NAMESPACE 替换为您的命名空间名称。

为 Config Connector 控制器 Pod 配置副本

在 Config Connector 1.107 及更高版本中,您可以为 Config Connector 控制器配置副本数量。您只能配置 cnrm-webhook-manager

例如,以下步骤展示了如何将 cnrm-webhook-manager 控制器的副本数量配置为 3

  1. 创建名为 configure-webhook-manager.yaml 的文件并将以下 YAML 复制到其中:

    apiVersion: customize.core.cnrm.cloud.google.com/v1beta1
    kind: ControllerResource
    metadata:
      name: cnrm-webhook-manager
    spec:
      replicas: 3
      containers:
        - name: webhook
          resources:
            limits:
              memory: 512Mi
            requests:
              memory: 256Mi
    
  2. 使用 kubectl apply 将修改后的配置应用于您的集群:

    kubectl apply -f configure-webhook-manager.yaml
  3. 运行以下命令,验证配置是否成功。

    kubectl get controllerresource cnrm-webhook-manager -o jsonpath='{.status.healthy}'

    它应该会显示设为 truestatus.healthy 字段。

  4. 验证集群中是否存在 3 个 webhook Pod。

    kubectl get pods -n cnrm-system -l cnrm.cloud.google.com/component=cnrm-webhook-manager

    创建和重新创建 Pod 可能需要几分钟时间。

还原容器资源和副本中的配置更改

使用 kubectl delete 删除您配置的 ControllerResource 自定义资源。删除后,Config Connector 运算符会使用默认容器资源和副本重新创建控制器。

kubectl delete -f configure-webhook-manager.yaml