排查托管式 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 configmap 中的 CNI 条目存在但值不是 on,则您可能会在功能状态消息中看到 CNI_CONFIG_UNSUPPORTED 代码。

如需解决此错误消息,您必须移除任何尝试停用托管式 CNI 的操作。

  • 情况 1:移除集群内 CPR CR 中的“启用型托管式 CNI”标签。

    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:在 asm-options configmap 中移除 CNI 条目的 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,获取更多排查步骤。