設定容器資源和備用資源


本頁面說明如何在 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}'

    應顯示 status.healthy 欄位設為 true

  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}'

    應顯示 status.healthy 欄位設為 true

  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