Memecahkan Masalah Komputasi Kubernetes

Dalam artikel ini, Anda mempelajari cara memecahkan masalah kesalahan beban kerja umum pada komputasi Kubernetes. Kesalahan umum termasuk pekerjaan pelatihan dan kesalahan titik akhir.

Panduan inferensi

Kesalahan titik akhir Kubernetes umum pada komputasi Kubernetes dikategorikan ke dalam dua cakupan: cakupan komputasi dan cakupan kluster. Kesalahan cakupan komputasi terkait dengan target komputasi, seperti target komputasi tidak ditemukan, atau target komputasi tidak dapat diakses. Kesalahan cakupan kluster terkait dengan kluster Kubernetes yang mendasar, seperti kluster itu sendiri tidak dapat dijangkau, atau kluster tidak ditemukan.

Kesalahan komputasi Kubernetes

Berikut ini adalah jenis kesalahan umum dalam cakupan komputasi yang mungkin Anda temui saat menggunakan komputasi Kubernetes untuk membuat titik akhir online dan penyebaran online untuk inferensi model real-time. Anda dapat mengalami masalah saat memotret dengan mengikuti bagian tertaut untuk panduan:

ERROR: GenericComputeError

Pesan kesalahannya adalah sebagai:

Failed to get compute information.

Kesalahan ini harus terjadi ketika sistem gagal mendapatkan informasi komputasi dari kluster Kubernetes. Anda dapat memeriksa item berikut untuk memecahkan masalah:

  • Periksa status kluster Kubernetes. Jika kluster tidak berjalan, Anda harus memulai kluster terlebih dahulu.
  • Periksa kesehatan kluster Kubernetes.
    • Anda dapat melihat laporan pemeriksaan kesehatan kluster untuk masalah apa pun, misalnya, jika kluster tidak dapat dijangkau.
    • Anda dapat membuka portal ruang kerja untuk memeriksa status komputasi.
  • Periksa apakah jenis instans adalah informasi yang benar. Anda dapat memeriksa jenis instans yang didukung dalam dokumentasi komputasi Kubernetes.
  • Cobalah untuk melepaskan dan memasang kembali komputasi ke ruang kerja jika berlaku.

Catatan

Untuk kesulitan menembak kesalahan dengan memasang kembali, harap jamin untuk memasang kembali dengan konfigurasi yang sama persis seperti komputasi yang dilepaskan sebelumnya, seperti nama komputasi dan namespace yang sama, jika tidak, Anda mungkin mengalami kesalahan lain.

ERROR: ComputeNotFound

Pesan kesalahannya adalah sebagai berikut:

Cannot find Kubernetes compute.

Kesalahan ini akan terjadi ketika:

  • Sistem tidak dapat menemukan komputasi saat membuat/memperbarui titik akhir/penyebaran online baru.
  • Komputasi titik akhir/penyebaran online yang ada telah dihapus.

Anda dapat memeriksa item berikut untuk memecahkan masalah:

  • Cobalah untuk membuat ulang titik akhir dan penyebaran.
  • Cobalah untuk melepaskan dan memasang kembali komputasi ke ruang kerja. Perhatikan lebih banyak catatan tentang memasang kembali.

ERROR: ComputeNotAccessible

Pesan kesalahannya adalah sebagai berikut:

The Kubernetes compute is not accessible.

Kesalahan ini harus terjadi ketika MSI ruang kerja (identitas terkelola) tidak memiliki akses ke kluster AKS. Anda dapat memeriksa apakah MSI ruang kerja memiliki akses ke AKS, dan jika tidak, Anda dapat mengikuti dokumen ini untuk mengelola akses dan identitas.

KESALAHAN: InvalidComputeInformation

Pesan kesalahannya adalah sebagai berikut:

The compute information is invalid.

Ada proses validasi target komputasi saat menyebarkan model ke kluster Kubernetes Anda. Kesalahan ini akan terjadi ketika informasi komputasi tidak valid. Misalnya, target komputasi tidak ditemukan, atau konfigurasi ekstensi Azure Pembelajaran Mesin telah diperbarui di kluster Kubernetes Anda.

Anda dapat memeriksa item berikut untuk memecahkan masalah:

  • Periksa apakah target komputasi yang Anda gunakan sudah benar dan sudah ada di ruang kerja Anda.
  • Cobalah untuk melepaskan dan memasang kembali komputasi ke ruang kerja. Perhatikan lebih banyak catatan tentang memasang kembali.

KESALAHAN: InvalidComputeNoKubernetesConfiguration

Pesan kesalahannya adalah sebagai berikut:

The compute kubeconfig is invalid.

Kesalahan ini harus terjadi ketika sistem gagal menemukan konfigurasi apa pun untuk terhubung ke kluster, seperti:

  • Untuk kluster Arc-Kubernetes, tidak ada konfigurasi Azure Relay yang dapat ditemukan.
  • Untuk kluster AKS, tidak ada konfigurasi AKS yang dapat ditemukan.

Untuk membangun kembali konfigurasi koneksi komputasi di kluster Anda, Anda dapat mencoba melepaskan dan memasang kembali komputasi ke ruang kerja. Perhatikan lebih banyak catatan tentang memasang kembali.

Kesalahan kluster Kubernetes

Di bawah ini adalah daftar jenis kesalahan dalam cakupan kluster yang mungkin Anda temui saat menggunakan komputasi Kubernetes untuk membuat titik akhir online dan penyebaran online untuk inferensi model real-time, yang dapat Anda kesulitan memotret dengan mengikuti panduan:

ERROR: GenericClusterError

Pesan kesalahannya adalah sebagai berikut:

Failed to connect to Kubernetes cluster: <message>

Kesalahan ini harus terjadi ketika sistem gagal terhubung ke kluster Kubernetes karena alasan yang tidak diketahui. Anda dapat memeriksa item berikut untuk memecahkan masalah:

Untuk kluster AKS:

  • Periksa apakah kluster AKS dimatikan.
    • Jika kluster tidak berjalan, Anda harus memulai kluster terlebih dahulu.
  • Periksa apakah kluster AKS telah mengaktifkan jaringan yang dipilih dengan menggunakan rentang IP resmi.
    • Jika kluster AKS telah mengaktifkan rentang IP resmi, pastikan semua rentang IP sarana kontrol Azure Pembelajaran Mesin telah diaktifkan untuk kluster AKS. Informasi selengkapnya, Anda dapat melihat dokumen ini.

Untuk kluster AKS atau kluster Kubernetes dengan dukungan Azure Arc:

  • Periksa apakah server API Kubernetes dapat diakses dengan menjalankan kubectl perintah di kluster.

ERROR: ClusterNotReachable

Pesan kesalahannya adalah sebagai berikut:

The Kubernetes cluster is not reachable. 

Kesalahan ini akan terjadi ketika sistem tidak dapat tersambung ke kluster. Anda dapat memeriksa item berikut untuk memecahkan masalah:

Untuk kluster AKS:

  • Periksa apakah kluster AKS dimatikan.
    • Jika kluster tidak berjalan, Anda harus memulai kluster terlebih dahulu.

Untuk kluster AKS atau kluster Kubernetes dengan dukungan Azure Arc:

  • Periksa apakah server API Kubernetes dapat diakses dengan menjalankan kubectl perintah di kluster.

KESALAHAN: ClusterNotFound

Pesan kesalahannya adalah sebagai berikut:

Cannot found Kubernetes cluster. 

Kesalahan ini harus terjadi ketika sistem tidak dapat menemukan kluster AKS/Arc-Kubernetes.

Anda dapat memeriksa item berikut untuk memecahkan masalah:

  • Pertama, periksa ID sumber daya kluster di portal Azure untuk memverifikasi apakah sumber daya kluster Kubernetes masih ada dan berjalan normal.
  • Jika kluster ada dan sedang berjalan, maka Anda dapat mencoba melepaskan dan memasang kembali komputasi ke ruang kerja. Perhatikan lebih banyak catatan tentang memasang kembali.

Tip

Panduan pemecahan masalah lebih lanjut tentang kesalahan umum saat membuat/memperbarui titik akhir dan penyebaran online Kubernetes, Anda dapat menemukan di Cara memecahkan masalah titik akhir online.

Kesalahan identitas

KESALAHAN: RefreshExtensionIdentityNotSet

Kesalahan ini terjadi ketika ekstensi diinstal tetapi identitas ekstensi tidak ditetapkan dengan benar. Anda dapat mencoba menginstal ulang ekstensi untuk memperbaikinya.

Harap perhatikan bahwa kesalahan ini hanya untuk kluster terkelola

Bagaimana cara memeriksa sslCertPemFile dan sslKeyPemFile sudah benar?

Untuk memungkinkan kesalahan yang diketahui muncul, Anda dapat menggunakan perintah untuk menjalankan pemeriksaan garis besar untuk sertifikasi dan kunci Anda. Harapkan perintah kedua untuk mengembalikan "kunci RSA ok" tanpa meminta kata sandi.

openssl x509 -in cert.pem -noout -text
openssl rsa -in key.pem -noout -check

Jalankan perintah untuk memverifikasi apakah sslCertPemFile dan sslKeyPemFile cocok:

openssl x509 -in cert.pem -noout -modulus | md5sum
openssl rsa -in key.pem -noout -modulus | md5sum

Untuk sslCertPemFile, ini adalah sertifikat publik. Ini harus mencakup rantai sertifikat yang mencakup sertifikat berikut dan harus dalam urutan sertifikat server, sertifikat OS perantara dan sertifikat OS akar:

  • Sertifikat server: server disajikan kepada klien selama jabat tangan TLS. Ini berisi kunci publik server, nama domain, dan informasi lainnya. Sertifikat server ditandatangani oleh otoritas sertifikat perantara (CA) yang menjamin identitas server.
  • Sertifikat OS perantara: CA menengah hadir kepada klien untuk membuktikan otoritasnya untuk menandatangani sertifikat server. Ini berisi kunci publik CA perantara, nama, dan informasi lainnya. Sertifikat OS perantara ditandatangani oleh CA akar yang menjamin identitas CA perantara.
  • Sertifikat OS akar: CA akar hadir kepada klien untuk membuktikan otoritasnya untuk menandatangani sertifikat OS perantara. Ini berisi kunci publik, nama, dan informasi ca akar lainnya. Sertifikat OS akar ditandatangani sendiri dan dipercaya oleh klien.

Panduan pelatihan

Saat pekerjaan pelatihan berjalan, Anda dapat memeriksa status pekerjaan di portal ruang kerja. Ketika Anda mengalami beberapa status pekerjaan abnormal, seperti pekerjaan yang dicoba ulang beberapa kali, atau pekerjaan telah terjebak dalam status inisialisasi, atau bahkan pekerjaan akhirnya gagal, Anda dapat mengikuti panduan untuk memecahkan masalah.

Penelusuran kesalahan percobaan kembali pekerjaan

Jika pod pekerjaan pelatihan yang berjalan di kluster dihentikan karena node yang berjalan ke node OOM (kehabisan memori), pekerjaan secara otomatis dicoba kembali ke simpul lain yang tersedia.

Untuk men-debug lebih lanjut akar penyebab pekerjaan coba, Anda dapat membuka portal ruang kerja untuk memeriksa log coba lagi pekerjaan.

  • Setiap log coba lagi direkam di folder log baru dengan format "nomor> coba< lagi lagi"(seperti: coba lagi-001).

Kemudian Anda bisa mendapatkan informasi pemetaan simpul pekerjaan coba lagi, untuk mencari tahu simpul mana yang menjalankan pekerjaan coba lagi.

Screenshot of adding a new extension to the Azure Arc-enabled Kubernetes cluster from the Azure portal.

Anda bisa mendapatkan informasi pemetaan simpul pekerjaan dari amlarc_cr_bootstrap.log di bawah folder system_logs.

Nama host simpul, tempat pod pekerjaan berjalan ditunjukkan dalam log ini, misalnya:

++ echo 'Run on node: ask-agentpool-17631869-vmss0000"

"ask-agentpool-17631869-vmss0000" mewakili nama host node yang menjalankan pekerjaan ini di kluster AKS Anda. Kemudian Anda dapat mengakses kluster untuk memeriksa status simpul untuk penyelidikan lebih lanjut.

Pod pekerjaan terjebak dalam status Init

Jika pekerjaan berjalan lebih lama dari yang Anda harapkan dan jika Anda menemukan bahwa pod pekerjaan Anda terjebak dalam status Init dengan peringatan Unable to attach or mount volumes: *** failed to get plugin from volumeSpec for volume ***-blobfuse-*** err=no volume plugin matchedini , masalahnya mungkin terjadi karena ekstensi Azure Pembelajaran Mesin tidak mendukung mode unduhan untuk data input.

Untuk mengatasi masalah ini, ubah ke mode pemasangan untuk data input Anda.

Kesalahan kegagalan pekerjaan umum

Di bawah ini adalah daftar jenis kesalahan umum yang mungkin Anda temui saat menggunakan komputasi Kubernetes untuk membuat dan menjalankan pekerjaan pelatihan, yang dapat Anda repot dengan mengikuti panduan:

Pekerjaan gagal. 137

Jika pesan kesalahan adalah:

Azure Machine Learning Kubernetes job failed. 137:PodPattern matched: {"containers":[{"name":"training-identity-sidecar","message":"Updating certificates in /etc/ssl/certs...\n1 added, 0 removed; done.\nRunning hooks in /etc/ca-certificates/update.d...\ndone.\n * Serving Flask app 'msi-endpoint-server' (lazy loading)\n * Environment: production\n   WARNING: This is a development server. Do not use it in a production deployment.\n   Use a production WSGI server instead.\n * Debug mode: off\n * Running on http://127.0.0.1:12342/ (Press CTRL+C to quit)\n","code":137}]}

Periksa pengaturan proksi Anda dan periksa apakah 127.0.0.1 ditambahkan ke proxy-skip-range saat menggunakan az connectedk8s connect dengan mengikuti konfigurasi jaringan ini.

Pekerjaan gagal. E45004

Jika pesan kesalahan adalah:

Azure Machine Learning Kubernetes job failed. E45004:"Training feature is not enabled, please enable it when install the extension."

Periksa apakah Anda telah enableTraining=True mengatur saat melakukan penginstalan ekstensi Azure Pembelajaran Mesin. Detail lebih lanjut dapat ditemukan di Menyebarkan ekstensi Azure Pembelajaran Mesin pada kluster AKS atau Arc Kubernetes

Pekerjaan gagal. 400

Jika pesan kesalahan adalah:

Azure Machine Learning Kubernetes job failed. 400:{"Msg":"Encountered an error when attempting to connect to the Azure Machine Learning token service","Code":400}

Anda dapat mengikuti bagian pemecahan masalah Private Link untuk memeriksa pengaturan jaringan Anda.

Memberi kunci akun atau token SAS

Jika Anda perlu mengakses Azure Container Registry (ACR) untuk gambar Docker, dan untuk mengakses Akun Penyimpanan untuk data pelatihan, masalah ini harus terjadi ketika komputasi tidak ditentukan dengan identitas terkelola.

Untuk mengakses Azure Container Registry (ACR) dari kluster komputasi Kubernetes untuk gambar Docker, atau mengakses akun penyimpanan untuk data pelatihan, Anda perlu melampirkan komputasi Kubernetes dengan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna diaktifkan.

Dalam skenario pelatihan di atas, identitas komputasi ini diperlukan agar komputasi Kubernetes digunakan sebagai kredensial untuk berkomunikasi antara sumber daya ARM yang terikat ke ruang kerja dan kluster komputasi Kube. Jadi tanpa identitas ini, pekerjaan pelatihan gagal dan melaporkan kunci akun atau token sas yang hilang. Ambil akses akun penyimpanan, misalnya, jika Anda tidak menentukan identitas terkelola ke komputasi Kubernetes Anda, pekerjaan gagal dengan pesan kesalahan berikut:

Unable to mount data store workspaceblobstore. Give either an account key or SAS token

Penyebabnya adalah akun penyimpanan default ruang kerja pembelajaran mesin tanpa kredensial apa pun tidak dapat diakses untuk pekerjaan pelatihan di komputasi Kubernetes.

Untuk mengurangi masalah ini, Anda dapat menetapkan Identitas Terkelola ke komputasi dalam langkah lampirkan komputasi, atau Anda dapat menetapkan Identitas Terkelola ke komputasi setelah dilampirkan. Detail selengkapnya dapat ditemukan di Tetapkan Identitas Terkelola ke target komputasi.

Otorisasi AzureBlob gagal

Jika Anda perlu mengakses AzureBlob untuk pengunggahan atau pengunduhan data dalam pekerjaan pelatihan Anda di komputasi Kubernetes, maka pekerjaan gagal dengan pesan kesalahan berikut:

Unable to upload project files to working directory in AzureBlob because the authorization failed. 

Penyebabnya adalah otorisasi gagal ketika pekerjaan mencoba mengunggah file proyek ke AzureBlob. Anda dapat memeriksa item berikut untuk memecahkan masalah:

  • Pastikan akun penyimpanan telah mengaktifkan pengecualian "Izinkan layanan Azure pada daftar layanan tepercaya untuk mengakses akun penyimpanan ini" dan ruang kerja berada dalam daftar instans sumber daya.
  • Pastikan ruang kerja memiliki identitas terkelola yang ditetapkan sistem.

Kita dapat menggunakan metode untuk memeriksa pengaturan tautan privat dengan masuk ke satu pod di kluster Kubernetes dan kemudian memeriksa pengaturan jaringan terkait.

  • Temukan ID ruang kerja di portal Azure atau dapatkan ID ini dengan menjalankan az ml workspace show di baris perintah.

  • Tampilkan semua pod azureml-fe yang dijalankan oleh kubectl get po -n azureml -l azuremlappname=azureml-fe.

  • Masuk ke salah satu dari mereka jalankan kubectl exec -it -n azureml {scorin_fe_pod_name} bash.

  • Jika kluster tidak menggunakan eksekusi nslookup {workspace_id}.workspace.{region}.api.azureml.msproksi . Jika Anda menyiapkan tautan privat dari VNet ke ruang kerja dengan benar, MAKA IP internal di VNet harus direspons melalui alat DNSLookup .

  • Jika kluster menggunakan proksi, Anda dapat mencoba ke curl ruang kerja

curl https://{workspace_id}.workspace.westcentralus.api.azureml.ms/metric/v2.0/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.MachineLearningServices/workspaces/{workspace_name}/api/2.0/prometheus/post -X POST -x {proxy_address} -d {} -v -k

Ketika proksi dan ruang kerja disiapkan dengan benar dengan tautan privat, Anda harus mengamati upaya untuk terhubung ke IP internal. Respons dengan kode status HTTP 401 diharapkan dalam skenario ini jika token tidak disediakan.

Masalah umum lainnya

Pembaruan komputasi Kubernetes tidak berlaku

Saat ini, CLI v2 dan SDK v2 tidak mengizinkan pembaruan konfigurasi apa pun dari komputasi Kubernetes yang ada. Misalnya, mengubah namespace tidak berlaku.

Nama grup ruang kerja atau sumber daya diakhir dengan '-'

Penyebab umum kegagalan "InternalServerError" saat membuat beban kerja seperti penyebaran, titik akhir, atau pekerjaan dalam komputasi Kubernetes, adalah memiliki karakter khusus seperti '-' di akhir ruang kerja atau nama grup sumber daya Anda.

Langkah berikutnya