Memecahkan masalah CNI terkelola

Halaman ini menjelaskan masalah CNI terkelola umum dengan Cloud Service Mesh dan cara menyelesaikannya. Jika Anda memerlukan bantuan tambahan, lihat Mendapatkan dukungan.

Konfigurasi yang tidak didukung dengan CNI terkelola yang diaktifkan

Penerapan Managed Cloud Service Mesh dengan bidang kontrol TRAFFIC_DIRECTOR memerlukan CNI terkelola dan tidak mendukung penonaktifannya. Anda mungkin melihat kode CNI_CONFIG_UNSUPPORTED dalam pesan status fitur jika label mesh.cloud.google.com/managed-cni-enabled ada, tetapi tidak memiliki nilai true dalam revisi bidang kontrol (CPR) resource kustom (CR) atau jika entri CNI dalam configmap asm-options ada, tetapi tidak memiliki nilai on.

Untuk mengatasi pesan error ini, Anda harus menghapus upaya untuk menonaktifkan CNI terkelola.

  • Kasus 1: Hapus label yang Diaktifkan CNI terkelola di CR CPR di cluster.

    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
    
  • Kasus 2: Hapus string data asm-options configmap ASM_OPTS entri CNI.

    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
    

Pod CNI tidak dapat dijadwalkan

Anda mungkin melihat error ini jika Daemonset CNI terkelola tidak dapat menjadwalkan Pod di salah satu node dalam cluster.

Perhatikan bahwa resource dalam cluster memerlukan setidaknya memory: 100Mi di setiap node. Untuk mengetahui informasi selengkapnya, lihat Persyaratan Cloud Service Mesh. Jika cluster Anda sudah memiliki alokasi memori yang cukup, lihat artikel Pod tidak dapat dijadwalkan untuk mengetahui langkah-langkah pemecahan masalah tambahan.

Node terjebak dalam status NotReady dengan error containerID tidak ada

Anda mungkin melihat error ini saat node cluster tidak dapat siap setelah mengupgrade versi Google Kubernetes Engine (GKE).

Pesan error:

container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: missing containerID

Penyebab:

Masalah ini berasal dari inkompatibilitas antara Cloud Service Mesh Container Network Interface (CNI) versi 1.20.x dan plugin Container Network Interface (CNI) di GKE. Plugin CNI memerlukan kompatibilitas dengan spesifikasi CNI 1.1.0. Cluster yang menjalankan GKE versi 1.35.1-gke.1516000 atau yang lebih baru akan otomatis mengaktifkan dukungan untuk spesifikasi ini. Karena Cloud Service Mesh CNI versi 1.20.x tidak mendukung spesifikasi CNI versi 1.1.0, health check node akan gagal dan node tetap dalam status NotReady.

Solusi:

Jika cluster Anda masih menjalankan CNI Cloud Service Mesh versi 1.20.x, jangan mengupgrade node pool GKE Anda ke 1.35.1-gke.1516000 atau yang lebih baru.

Jika Anda telah melakukan upgrade dan mengalami masalah ini, solusi yang direkomendasikan adalah melakukan downgrade versi GKE ke versi yang lebih lama dari 1.35.1-gke.1516000 hingga CNI terkelola cluster Anda diupgrade ke versi 1.23.x atau yang lebih baru.