Memecahkan masalah platform untuk kluster Kubernetes dengan dukungan Azure Arc

Dokumen ini menyediakan panduan pemecahan masalah untuk masalah dengan konektivitas, izin, dan agen Kubernetes dengan dukungan Azure Arc. Ini juga menyediakan panduan pemecahan masalah untuk Azure GitOps, yang dapat digunakan di kluster Kubernetes yang didukung Azure Arc atau Azure Kubernetes Service (AKS).

Untuk bantuan memecahkan masalah yang terkait dengan ekstensi, seperti GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, lihat Memecahkan masalah ekstensi untuk kluster Kubernetes dengan dukungan Azure Arc.

Azure CLI

Sebelum menggunakan az connectedk8s atau az k8s-configuration perintah CLI, pastikan bahwa Azure CLI diatur untuk bekerja terhadap langganan Azure yang benar.

az account set --subscription 'subscriptionId'
az account show

Agen Azure Arc

Semua agen untuk Azure Arc dengan Kube yang diaktifkan disebarkan sebagai Pod di azure-arc namespace layanan. Semua Pod harus berjalan dan melewati pemeriksaan kesehatan.

Pertama, verifikasi rilis Bagan Azure Arc Helm:

$ helm --namespace default status azure-arc
NAME: azure-arc
LAST DEPLOYED: Fri Apr  3 11:13:10 2020
NAMESPACE: default
STATUS: deployed
REVISION: 5
TEST SUITE: None

Jika rilis Bagan Helm tidak ditemukan atau hilang, coba sambungkan kluster ke Azure Arc lagi.

Jika rilis Bagan Helm ada dengan STATUS: deployed, periksa status agen menggunakan kubectl:

$ kubectl -n azure-arc get deployments,pods
NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cluster-metadata-operator    1/1     1            1           3d19h
deployment.apps/clusterconnect-agent         1/1     1            1           3d19h
deployment.apps/clusteridentityoperator      1/1     1            1           3d19h
deployment.apps/config-agent                 1/1     1            1           3d19h
deployment.apps/controller-manager           1/1     1            1           3d19h
deployment.apps/extension-events-collector   1/1     1            1           3d19h
deployment.apps/extension-manager            1/1     1            1           3d19h
deployment.apps/flux-logs-agent              1/1     1            1           3d19h
deployment.apps/kube-aad-proxy               1/1     1            1           3d19h
deployment.apps/metrics-agent                1/1     1            1           3d19h
deployment.apps/resource-sync-agent          1/1     1            1           3d19h

NAME                                              READY   STATUS    RESTARTS        AGE
pod/cluster-metadata-operator-74747b975-9phtz     2/2     Running   0               3d19h
pod/clusterconnect-agent-cf4c7849c-88fmf          3/3     Running   0               3d19h
pod/clusteridentityoperator-79bdfd945f-pt2rv      2/2     Running   0               3d19h
pod/config-agent-67bcb94b7c-d67t8                 1/2     Running   0               3d19h
pod/controller-manager-559dd48b64-v6rmk           2/2     Running   0               3d19h
pod/extension-events-collector-85f4fbff69-55zmt   2/2     Running   0               3d19h
pod/extension-manager-7c7668446b-69gps            3/3     Running   0               3d19h
pod/flux-logs-agent-fc7c6c959-vgqvm               1/1     Running   0               3d19h
pod/kube-aad-proxy-84d668c44b-j457m               2/2     Running   0               3d19h
pod/metrics-agent-58fb8554df-5ll67                2/2     Running   0               3d19h
pod/resource-sync-agent-dbf5db848-c9lg8           2/2     Running   0               3d19h

Semua Pod harus menampilkan STATUS sebagai Running dengan baik 3/3 atau 2/2 di bawah kolom READY. Ambil log dan jelaskan Pod yang mengembalikan Error atau CrashLoopBackOff. Jika ada Pod yang terjebak dalam status Pending, mungkin ada sumber daya yang tidak mencukupi pada node kluster. Meningkatkan skala kluster Anda bisa membuat pod ini beralih ke Running status.

Penyediaan sumber daya gagal/Kesalahan waktu habis layanan

Jika Anda melihat kesalahan ini, periksa status Azure untuk melihat apakah ada peristiwa aktif yang berdampak pada status layanan Kubernetes dengan dukungan Azure Arc. Jika demikian, tunggu hingga peristiwa layanan diselesaikan, lalu coba onboarding lagi setelah menghapus sumber daya kluster yang terhubung yang ada. Jika tidak ada peristiwa layanan, dan Anda terus menghadapi masalah saat onboarding, buka tiket dukungan sehingga kami dapat menyelidiki masalah tersebut.

Kesalahan klaim kelebihan

Jika Anda menerima klaim kelebihan penggunaan, pastikan bahwa perwakilan layanan Anda bukan bagian dari lebih dari 200 grup Microsoft Entra. Jika demikian, Anda harus membuat dan menggunakan perwakilan layanan lain yang bukan anggota lebih dari 200 grup, atau menghapus perwakilan layanan asli dari beberapa grupnya dan mencoba lagi.

Klaim kelebihan penggunaan juga dapat terjadi jika Anda telah mengonfigurasi lingkungan proksi keluar tanpa mengizinkan titik https://<region>.obo.arc.azure.com:8084/ akhir untuk lalu lintas keluar.

Jika tidak ada yang berlaku, buka permintaan dukungan sehingga kami dapat melihat masalah tersebut.

Masalah saat menyambungkan kluster Kubernetes ke Azure Arc

Koneksi kluster ke Azure Arc memerlukan akses ke langganan Azure dan cluster-admin akses ke kluster target. Jika Anda tidak dapat mencapai kluster, atau jika Anda memiliki izin yang tidak memadai, menyambungkan kluster ke Azure Arc akan gagal. Pastikan Anda telah memenuhi semua prasyarat untuk menyambungkan kluster.

Tip

Untuk panduan visual untuk memecahkan masalah koneksi, lihat Mendiagnosis masalah koneksi untuk kluster Kube yang diaktifkan Arc.

Masalah resolusi DNS

Kunjungi Men-debug Resolusi DNS untuk membantu mengatasi masalah dengan resolusi DNS di kluster Anda.

Masalah konektivitas jaringan keluar

Masalah dengan konektivitas jaringan keluar dari kluster mungkin muncul karena alasan yang berbeda. Pertama pastikan semua persyaratan jaringan telah terpenuhi.

Jika Anda mengalami masalah konektivitas, dan kluster Anda berada di belakang server proksi keluar, pastikan Anda telah melewati parameter proksi selama onboarding kluster Anda dan bahwa proksi dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat Menyambungkan menggunakan server proksi keluar.

Anda mungkin melihat kesalahan yang mirip dengan yang berikut ini:

An exception has occurred while trying to execute the cluster diagnostic checks in the cluster. Exception: Unable to pull cluster-diagnostic-checks helm chart from the registry 'mcr.microsoft.com/azurearck8s/helmchart/stable/clusterdiagnosticchecks:0.1.2': Error: failed to do request: Head "https://mcr.microsoft.com/v2/azurearck8s/helmchart/stable/clusterdiagnosticchecks/manifests/0.1.2": dial tcp xx.xx.xx.219:443: i/o timeout

Kesalahan ini terjadi ketika https://k8connecthelm.azureedge.net titik akhir diblokir. Pastikan jaringan Anda memungkinkan konektivitas ke titik akhir ini dan memenuhi semua persyaratan jaringan lainnya.

Tidak dapat mengambil sertifikat MSI

Masalah saat mengambil sertifikat MSI biasanya disebabkan oleh masalah jaringan. Periksa untuk memastikan semua persyaratan jaringan telah terpenuhi, lalu coba lagi.

Izin kluster tidak mencukupi

Jika file kubeconfig yang disediakan tidak memiliki izin yang memadai untuk menginstal agen Azure Arc, perintah Azure CLI mengembalikan kesalahan: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

Untuk mengatasi masalah ini, pastikan bahwa pengguna yang menghubungkan kluster ke Azure Arc memiliki peran yang cluster-admin ditetapkan.

Tidak dapat menyambungkan kluster OpenShift ke Azure Arc

Jika az connectedk8s connect waktu habis dan gagal saat menyambungkan kluster OpenShift ke Azure Arc:

  1. Pastikan bahwa kluster OpenShift memenuhi prasyarat versi: 4.5.41+ atau 4.6.35+ atau 4.7.18+.

  2. Sebelum Anda menjalankan az connectedk8s connnect, jalankan perintah ini pada kluster:

    oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
    

Batas waktu penginstalan

Menyambungkan kluster Kube ke Azure Arc dengan Kube yang diaktifkan memerlukan pemasangan agen Arc Azure pada kluster tersebut. Jika klaster berjalan melalui koneksi internet yang lambat, penarikan gambar kontainer untuk agen mungkin memakan waktu lebih lama daripada batas waktu Azure CLI.

Kesalahan batas waktu Helm

Anda mungkin melihat kesalahan Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. Untuk mengatasi masalah ini, coba langkah-langkah berikut:

  1. Jalankan perintah berikut:

    kubectl get pods -n azure-arc
    
  2. Periksa apakah clusterconnect-agent pod atau config-agent menampilkan crashloopbackoff, atau apakah tidak semua kontainer berjalan:

    NAME                                        READY   STATUS             RESTARTS   AGE
    cluster-metadata-operator-664bc5f4d-chgkl   2/2     Running            0          4m14s
    clusterconnect-agent-7cb8b565c7-wklsh       2/3     CrashLoopBackOff   0          1m15s
    clusteridentityoperator-76d645d8bf-5qx5c    2/2     Running            0          4m15s
    config-agent-65d5df564f-lffqm               1/2     CrashLoopBackOff   0          1m14s
    
  3. azure-identity-certificate Jika tidak ada, identitas terkelola yang ditetapkan sistem belum diinstal.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: azure-identity-certificate
    

    Untuk mengatasi masalah ini, coba hapus penyebaran Arc dengan menjalankan az connectedk8s delete perintah dan instal ulang. Jika masalah terus terjadi, itu bisa menjadi masalah dengan pengaturan proksi Anda. Dalam hal ini, coba sambungkan kluster Anda ke Azure Arc melalui proksi untuk menyambungkan kluster Anda ke Arc melalui proksi. Verifikasi juga bahwa semua prasyarat jaringan telah terpenuhi.

  4. clusterconnect-agent Jika pod dan config-agent berjalan, tetapi kube-aad-proxy pod hilang, periksa kebijakan keamanan pod Anda. Pod ini menggunakan azure-arc-kube-aad-proxy-sa akun layanan, yang tidak memiliki izin admin tetapi memerlukan izin untuk memasang jalur host.

  5. kube-aad-proxy Jika pod terjebak dalam ContainerCreating status, periksa apakah sertifikat kube-aad-proxy telah diunduh ke kluster.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: kube-aad-proxy-certificate
    

    Jika sertifikat hilang, hapus penyebaran dan coba onboarding lagi, menggunakan nama yang berbeda untuk kluster. Jika masalah berlanjut, buka permintaan dukungan.

Kesalahan modul CryptoHash

Saat mencoba melakukan onboarding kluster Kubernetes ke platform Azure Arc, lingkungan lokal (misalnya, konsol klien Anda) dapat mengembalikan pesan kesalahan berikut:

Cannot load native module 'Crypto.Hash._MD5'

Terkadang, modul dependen gagal diunduh dengan sukses saat menambahkan ekstensi connectedk8s dan k8s-configuration melalui Azure CLI atau Azure PowerShell. Untuk memperbaiki masalah ini, hapus secara manual lalu tambahkan ekstensi di lingkungan lokal.

Untuk menghapus ekstensi, gunakan:

az extension remove --name connectedk8s
az extension remove --name k8s-configuration

Untuk menambahkan ekstensi, gunakan:

az extension add --name connectedk8s
az extension add --name k8s-configuration

Masalah koneksi kluster

Jika kluster Anda berada di belakang proksi keluar atau firewall, verifikasi bahwa koneksi websocket diaktifkan untuk *.servicebus.windows.net, yang diperlukan khusus untuk fitur Cluster Koneksi. Selain itu, pastikan Anda menggunakan versi connectedk8s terbaru ekstensi Azure CLI jika Anda mengalami masalah menggunakan koneksi kluster.

clusterconnect-agent Jika pod dan kube-aad-proxy hilang, maka fitur koneksi kluster kemungkinan dinonaktifkan pada kluster. Jika demikian, az connectedk8s proxy akan gagal membuat sesi dengan kluster, dan Anda mungkin melihat kesalahan membaca Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

Untuk mengatasi kesalahan ini, aktifkan fitur koneksi kluster pada kluster Anda:

az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP

Untuk informasi selengkapnya, lihat Menggunakan kluster yang terhubung untuk terhubung dengan aman ke kluster Kubernetes dengan dukungan Azure Arc.

Aktifkan lokasi kustom menggunakan perwakilan layanan

Saat menyambungkan kluster Anda ke Azure Arc atau mengaktifkan lokasi kustom pada kluster yang ada, Anda mungkin melihat peringatan berikut:

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

Peringatan ini terjadi saat Anda menggunakan perwakilan layanan untuk masuk ke Azure, dan perwakilan layanan tidak memiliki izin yang diperlukan. Untuk menghindari kesalahan ini, ikuti langkah-langkah berikut:

  1. Masuk ke Azure CLI menggunakan akun pengguna Anda. Ambil ID Objek aplikasi Microsoft Entra yang digunakan oleh layanan Azure Arc:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. Masuk ke Azure CLI menggunakan perwakilan layanan. <objectId> Gunakan nilai dari langkah sebelumnya untuk mengaktifkan lokasi kustom pada kluster:

    • Untuk mengaktifkan lokasi kustom saat menyambungkan kluster ke Arc, jalankan az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • Untuk mengaktifkan lokasi kustom pada kluster Kubernetes dengan dukungan Azure Arc yang ada, jalankan az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

Langkah berikutnya