排解受管理 CNI 的問題

本頁說明 Cloud Service Mesh 中常見的受管理 CNI 問題,以及解決方法。如需其他協助,請參閱取得支援

不支援的受管理 CNI 啟用設定

採用 TRAFFIC_DIRECTOR 控制層實作的代管 Cloud Service Mesh 服務需要使用代管 CNI,且不支援停用 CNI。如果 mesh.cloud.google.com/managed-cni-enabled 標籤存在,但控制平面修訂版本 (CPR) 自訂資源 (CR) 中沒有 true 值,或是 asm-options 設定檔地圖中的 CNI 項目存在,但沒有 on 值,您可能會在功能狀態訊息中看到 CNI_CONFIG_UNSUPPORTED 代碼。

如要解決這則錯誤訊息,您必須移除任何嘗試停用受管理 CNI 的動作。

  • 案例 1:移除叢集中 CPR CR 中的「managed CNI Enabled」標籤。

    apiVersion: v1
    items:
    - apiVersion: mesh.cloud.google.com/v1beta1
      kind: ControlPlaneRevision
      metadata:
        annotations:
          mesh.cloud.google.com/proxy: '{"managed":"false"}'
        creationTimestamp: "2024-02-18T08:13:30Z"
        generation: 1
        labels:
          app.kubernetes.io/created-by: mesh.googleapis.com
          mesh.cloud.google.com/managed-cni-enabled: false # Remove the "mesh.cloud.google.com/managed-cni-enabled" label
        name: asm-managed
        namespace: istio-system
        resourceVersion: "13422558"
        uid: 3ad755ec-78ab-4d57-8fb9-c5e1a07740d5
    
  • 案例 2:移除 CNI 項目 asm-options configmap ASM_OPTS 資料字串。

    apiVersion: v1
    data:
      ASM_OPTS: CNI=off # Remove CNI entry in the ASM_OPTS data.
      multicluster_mode: connected
    kind: ConfigMap
    metadata:
      creationTimestamp: "2024-02-18T08:13:30Z"
      name: asm-options
      namespace: istio-system
      resourceVersion: "1640225"
      uid: 576602da-e60b-4df7-9427-5be06e5bf014
    

CNI Pod 無法排程

如果受管理的 CNI Daemonset 無法在叢集中的任何節點中排程 Pod,您可能會看到這項錯誤。

請注意,叢集內資源需要在每個節點上至少有 memory: 100Mi。詳情請參閱 Cloud Service Mesh 需求條件。如果叢集已分配足夠的記憶體,請參閱「Pod 無法排程」一文,瞭解其他疑難排解步驟。