設定容器資源和副本

本頁面說明如何為 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 以上版本)

設定時會用到兩種自訂資源:ControllerResourceNamespacedControllerResource

使用 ControllerResource 建立叢集範圍元件

使用 ControllerResource 自訂資源,為以叢集範圍部署執行的 Config Connector 元件設定資源。

即使以命名空間模式安裝設定連接器,下列元件一律屬於叢集範圍:

  • cnrm-webhook-manager
  • cnrm-deletiondefender
  • cnrm-resource-stats-recorder
  • cnrm-unmanaged-detector

在叢集模式下安裝 Config Connector 時,cnrm-controller-manager 也會是叢集範圍。

舉例來說,如要設定 cnrm-webhook-manager 控制器的 webhook 容器記憶體要求和限制,請建立並套用下列 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

針對命名空間控制器管理員使用 NamespacedControllerResource

當 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