Megosztás a következőn keresztül:


Kubernetes-számítás hibaelhárítása

Ebből a cikkből megtudhatja, hogyan háríthatja el a Kubernetes számítási feladataival kapcsolatos gyakori hibákat. A gyakori hibák közé tartoznak a betanítási feladatok és a végponthibák.

Következtetési útmutató

A Kubernetes-számítás gyakori Kubernetes-végponthibái két hatókörbe vannak besorolva: számítási hatókör és fürt hatóköre. A számítási hatókör hibái a számítási célhoz kapcsolódnak, például a számítási cél nem található, vagy a számítási cél nem érhető el. A fürt hatókörével kapcsolatos hibák a mögöttes Kubernetes-fürthöz kapcsolódnak, például maga a fürt nem érhető el, vagy a fürt nem található.

Kubernetes számítási hibák

A következő gyakori hibatípusok a számítási hatókörben, amikor a Kubernetes compute használatával online végpontokat és online üzembe helyezéseket hoz létre valós idejű modellkövetkeztetéshez. A forgatással kapcsolatban a csatolt szakaszokban talál útmutatást:

HIBA: GenericComputeError

A hibaüzenet a következő:

Failed to get compute information.

Ez a hiba akkor fordulhat elő, ha a rendszer nem tudta lekérni a számítási adatokat a Kubernetes-fürtből. A probléma elhárításához ellenőrizze az alábbi elemeket:

  • Ellenőrizze a Kubernetes-fürt állapotát. Ha a fürt nem fut, először el kell indítania a fürtöt.
  • Ellenőrizze a Kubernetes-fürt állapotát.
    • Megtekintheti a fürt állapot-ellenőrzési jelentését minden problémáról, például ha a fürt nem érhető el.
    • A számítási állapot ellenőrzéséhez lépjen a munkaterületi portálra.
  • Ellenőrizze, hogy a példánytípusok helyesek-e. A kubernetesi számítási dokumentációban ellenőrizheti a támogatott példánytípusokat.
  • Próbálja meg leválasztani és újracsatlakoztani a számítást a munkaterületre, ha van ilyen.

Feljegyzés

Az újracsatlakoztatással kapcsolatos hibák elhárításához ügyeljen arra, hogy a korábban leválasztott számítással megegyező konfigurációval (például ugyanazzal a számítási névvel és névtérrel) próbálkozzon újra, különben más hibák léphetnek fel.

HIBA: ComputeNotFound

A hibaüzenet a következő:

Cannot find Kubernetes compute.

Ez a hiba akkor fordulhat elő, ha:

  • A rendszer nem találja a számítást, amikor új online végpontot/üzembe helyezést hoz létre/frissít.
  • A meglévő online végpontok/üzemelő példányok számítása el lett távolítva.

A probléma elhárításához ellenőrizze az alábbi elemeket:

  • Próbálja újra létrehozni a végpontot és az üzembe helyezést.
  • Próbálja meg leválasztani és újracsatlakoztani a számítást a munkaterületre. Figyelje meg a további megjegyzéseket az újraaktachálásról.

HIBA: ComputeNotAccessible

A hibaüzenet a következő:

The Kubernetes compute is not accessible.

Ez a hiba akkor fordulhat elő, ha a munkaterületi MSI (felügyelt identitás) nem rendelkezik hozzáféréssel az AKS-fürthöz. Ellenőrizheti, hogy a munkaterületi MSI rendelkezik-e hozzáféréssel az AKS-hez, és ha nem, ezt a dokumentumot követve kezelheti a hozzáférést és az identitást.

HIBA: InvalidComputeInformation

A hibaüzenet a következő:

The compute information is invalid.

A modellek Kubernetes-fürtön való üzembe helyezésekor számítási célérvényesítési folyamat történik. Ez a hiba akkor fordulhat elő, ha a számítási adatok érvénytelenek. A számítási cél például nem található, vagy az Azure Machine Learning-bővítmény konfigurációja frissült a Kubernetes-fürtben.

A probléma elhárításához ellenőrizze az alábbi elemeket:

  • Ellenőrizze, hogy a használt számítási cél helyes-e és létezik-e a munkaterületen.
  • Próbálja meg leválasztani és újracsatlakoztani a számítást a munkaterületre. Figyelje meg a további megjegyzéseket az újraaktachálásról.

HIBA: InvalidComputeNoKubernetesConfiguration

A hibaüzenet a következő:

The compute kubeconfig is invalid.

Ez a hiba akkor fordulhat elő, ha a rendszer nem találja a fürthöz való csatlakozáshoz használt konfigurációt, például:

  • Az Arc-Kubernetes-fürt esetében nem található Azure Relay-konfiguráció.
  • Az AKS-fürt esetében nem található AKS-konfiguráció.

A fürtben lévő számítási kapcsolat konfigurációjának újraépítéséhez próbálja meg leválasztani és újracsatlakoztani a számítást a munkaterületre. Figyelje meg a további megjegyzéseket az újraaktachálásról.

Kubernetes-fürthiba

Az alábbiakban azokat a hibatípusokat találja a fürt hatókörében, amelyekkel a Kubernetes-számítással online végpontokat és online üzembe helyezéseket hozhat létre valós idejű modellkövetkeztetéshez, amelyeket az útmutató követésével okozhat:

HIBA: GenericClusterError

A hibaüzenet a következő:

Failed to connect to Kubernetes cluster: <message>

Ez a hiba akkor fordulhat elő, ha a rendszer ismeretlen okból nem tudott csatlakozni a Kubernetes-fürthöz. A probléma elhárításához ellenőrizze az alábbi elemeket:

AKS-fürtök esetén:

  • Ellenőrizze, hogy az AKS-fürt le van-e állítva.
    • Ha a fürt nem fut, először el kell indítania a fürtöt.
  • Ellenőrizze, hogy az AKS-fürt engedélyezett IP-tartományok használatával engedélyezte-e a kiválasztott hálózatot.
    • Ha az AKS-fürt engedélyezett IP-tartományokat engedélyezett, győződjön meg arról, hogy az Azure Machine Learning vezérlősíkjának IP-tartományai engedélyezve lettek az AKS-fürthöz. A dokumentum további információi.

AKS-fürt vagy Azure Arc-kompatibilis Kubernetes-fürt esetén:

  • Ellenőrizze, hogy a Kubernetes API-kiszolgáló elérhető-e a fürt parancsának futtatásával kubectl .

HIBA: ClusterNotReachable

A hibaüzenet a következő:

The Kubernetes cluster is not reachable. 

Ez a hiba akkor fordulhat elő, ha a rendszer nem tud csatlakozni egy fürthöz. A probléma elhárításához ellenőrizze az alábbi elemeket:

AKS-fürtök esetén:

  • Ellenőrizze, hogy az AKS-fürt le van-e állítva.
    • Ha a fürt nem fut, először el kell indítania a fürtöt.

AKS-fürt vagy Azure Arc-kompatibilis Kubernetes-fürt esetén:

  • Ellenőrizze, hogy a Kubernetes API-kiszolgáló elérhető-e a fürt parancsának futtatásával kubectl .

HIBA: ClusterNotFound

A hibaüzenet a következő:

Cannot found Kubernetes cluster. 

Ez a hiba akkor fordulhat elő, ha a rendszer nem találja az AKS/Arc-Kubernetes-fürtöt.

A probléma elhárításához ellenőrizze az alábbi elemeket:

  • Először ellenőrizze az Azure Portal fürterőforrás-azonosítóját annak ellenőrzéséhez, hogy a Kubernetes-fürterőforrás továbbra is létezik-e, és normál módon fut-e.
  • Ha a fürt létezik és fut, megpróbálhatja leválasztani és újracsatlakoztani a számítást a munkaterületre. Figyelje meg a további megjegyzéseket az újraaktachálásról.

HIBA: ClusterServiceNotFound

A hibaüzenet a következő:

AzureML extension service not found in cluster.

Ez a hiba akkor fordulhat elő, ha a bővítmény tulajdonában lévő bejövő szolgáltatás nem rendelkezik elegendő háttér podtal.

A következőket teheti:

  • Lépjen a fürtre, és ellenőrizze a szolgáltatás azureml-ingress-nginx-controller és a háttér pod állapotát a azureml névtér alatt.
  • Ha a fürt nem rendelkezik futó háttér podokkal, ellenőrizze az okot a pod leírásával. Ha például a pod nem rendelkezik elegendő erőforrással a futtatáshoz, törölhet néhány podot, hogy elegendő erőforrást szabadítjon fel a bejövő pod számára.

HIBA: ClusterUnauthorized

A hibaüzenet a következő:

Request to Kubernetes cluster unauthorized.

Ez a hiba csak a TA-kompatibilis fürtben fordulhat elő, ami azt jelenti, hogy a hozzáférési jogkivonat lejárt az üzembe helyezés során.

Néhány perc múlva újra próbálkozhat.

Tipp.

A Kubernetes online végpontjainak és üzembe helyezésének létrehozásakor/frissítésekor előforduló gyakori hibák hibaelhárítási útmutatóját az online végpontok hibaelhárítása című témakörben találja.

Identitáshiba

HIBA: RefreshExtensionIdentityNotSet

Ez a hiba akkor fordul elő, ha a bővítmény telepítve van, de a bővítmény identitása nincs megfelelően hozzárendelve. Megpróbálhatja újratelepíteni a bővítményt a javításhoz.

Figyelje meg, hogy ez a hiba csak felügyelt fürtök esetén jelenik meg

Hogyan ellenőrizheti az sslCertPemFile és az sslKeyPemFile helyességét?

Annak érdekében, hogy az ismert hibák felszínre kerülhessenek, a parancsokkal futtathatja a tanúsítvány és a kulcs alapkonfiguráció-ellenőrzését. Várja meg, hogy a második parancs az "RSA-kulcs ok" értéket adja vissza jelszó kérése nélkül.

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

Futtassa a parancsokat annak ellenőrzéséhez, hogy az sslCertPemFile és az sslKeyPemFile megegyezik-e:

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

Az sslCertPemFile esetében ez a nyilvános tanúsítvány. Tartalmaznia kell a tanúsítványláncot, amely a következő tanúsítványokat tartalmazza, és a kiszolgálótanúsítvány, a köztes hitelesítésszolgáltatói tanúsítvány és a fő hitelesítésszolgáltatói tanúsítvány sorrendjében kell lennie:

  • A kiszolgálótanúsítvány: a kiszolgáló a TLS-kézfogás során mutatja be az ügyfelet. Tartalmazza a kiszolgáló nyilvános kulcsát, tartománynevét és egyéb adatait. A kiszolgálótanúsítványt egy köztes hitelesítésszolgáltató (CA) írja alá, amely a kiszolgáló identitását biztosítja.
  • A köztes hitelesítésszolgáltatói tanúsítvány: a köztes hitelesítésszolgáltató bemutatja az ügyfélnek, hogy igazolja a kiszolgálótanúsítvány aláírására vonatkozó jogosultságát. A köztes hitelesítésszolgáltató nyilvános kulcsát, nevét és egyéb adatait tartalmazza. A köztes hitelesítésszolgáltató tanúsítványát egy legfelső szintű hitelesítésszolgáltató írja alá, amely a köztes hitelesítésszolgáltató identitását biztosítja.
  • A legfelső szintű hitelesítésszolgáltató tanúsítványa: a legfelső szintű hitelesítésszolgáltató bemutatja az ügyfélnek, hogy igazolja a hitelesítésszolgáltató köztes tanúsítványának aláírására vonatkozó jogosultságát. Tartalmazza a legfelső szintű hitelesítésszolgáltató nyilvános kulcsát, nevét és egyéb adatait. A legfelső szintű hitelesítésszolgáltatói tanúsítványt az ügyfél önaláírta és megbízhatónak minősíti.

Képzési útmutató

Amikor a betanítási feladat fut, ellenőrizheti a feladat állapotát a munkaterület portálján. Ha rendellenes feladatállapotba ütközik, például a feladat többször újrapróbálkozott, vagy a feladat inicializálási állapotban elakadt, vagy akár a feladat végül meghiúsult, az útmutatót követve elháríthatja a problémát.

Feladat ismételt hibakeresése

Ha a fürtben futó betanítási feladat podja leállt a csomópont OOM-jén futó csomópont miatt (memóriahiány), a rendszer automatikusan újrapróbálkozott egy másik elérhető csomópontra.

A feladat kiváltó okának további hibakereséséhez lépjen a munkaterület portáljára, és ellenőrizze a feladat újrapróbálkozásának naplóját.

  • Minden újrapróbálkozással kapcsolatos naplót egy új naplómappában rögzít a rendszer az "újrapróbálkozás< száma>" formátumban (például: retry-001).

Ezután lekérheti az újrapróbálkozási feladat csomópont-leképezési adatait, hogy megtudja, melyik csomóponton fut az újrapróbálkozási feladat.

Képernyőkép egy új bővítmény azure Arc-kompatibilis Kubernetes-fürthöz való hozzáadásáról az Azure Portalról.

A feladatcsomópont-leképezési adatokat a amlarc_cr_bootstrap.log system_logs mappából szerezheti be.

A naplóban szerepel annak a csomópontnak az állomásneve, amelyen a feladat pod fut, például:

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

Az "ask-agentpool-17631869-vmss0000" az AKS-fürtben ezt a feladatot futtató csomópont gazdagépnevét jelöli. Ezután hozzáférhet a fürthöz a csomópont állapotának további vizsgálatához.

A feladat podja init állapotban elakad

Ha a feladat a vártnál hosszabb ideig fut, és úgy találja, hogy a feladat podjai init állapotban ragadnak ezzel a figyelmeztetéssel Unable to attach or mount volumes: *** failed to get plugin from volumeSpec for volume ***-blobfuse-*** err=no volume plugin matched, a probléma azért fordulhat elő, mert az Azure Machine Learning-bővítmény nem támogatja a bemeneti adatok letöltési módját.

A probléma megoldásához váltson csatlakoztatási módra a bemeneti adatokhoz.

Gyakori feladathibák

Az alábbiakban felsoroljuk azokat a gyakori hibatípusokat, amelyekkel a Kubernetes Compute használatával létrehozhat és végrehajthat egy betanítási feladatot, amelyet az útmutató követésével okozhat:

A feladat végrehajtása nem sikerült. 137

Ha a hibaüzenet a következő:

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}]}

Ellenőrizze a proxybeállítást, és ellenőrizze, hogy a 127.0.0.1 lett-e hozzáadva a proxy-skip-range tartományhoz, ha az connectedk8s connect ezt a hálózati konfigurálást követi.

A feladat végrehajtása nem sikerült. E45004

Ha a hibaüzenet a következő:

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

Ellenőrizze, hogy beállította-e enableTraining=True az Azure Machine Learning-bővítmény telepítését. További részletekért tekintse meg az Azure Machine Learning-bővítmény üzembe helyezését az AKS-en vagy az Arc Kubernetes-fürtön

A feladat végrehajtása nem sikerült. 400

Ha a hibaüzenet a következő:

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

A hálózati beállítások ellenőrzéséhez kövesse a Private Link hibaelhárítási szakaszát .

Adjon meg egy fiókkulcsot vagy egy SAS-tokent

Ha hozzá kell férnie az Azure Container Registryhez (ACR) a Docker-rendszerképhez, és hozzá kell férnie a tárfiókhoz a betanítási adatokhoz, ez a probléma akkor fordulhat elő, ha a számítás nincs megadva felügyelt identitással.

Az Azure Container Registry (ACR) Docker-rendszerképekhez készült Kubernetes számítási fürtből való eléréséhez vagy a betanítási adatok tárfiókjának eléréséhez a Kubernetes-számítást egy rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitással kell csatlakoztatnia.

A fenti betanítási forgatókönyvben ez a számítástechnikai identitás szükséges ahhoz, hogy a Kubernetes compute hitelesítő adatként legyen használva a munkaterülethez és a Kubernetes számítási fürthöz kötött ARM-erőforrás közötti kommunikációhoz. Az identitás nélkül tehát a betanítási feladat meghiúsul, és a hiányzó fiókkulcsot vagy sas-jogkivonatot jelenti. Ha például nem ad meg felügyelt identitást a Kubernetes-számításhoz, a feladat a következő hibaüzenettel hiúsul meg:

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

Ennek az az oka, hogy a gépi tanulási munkaterület alapértelmezett tárfiókja hitelesítő adatok nélkül nem érhető el a Kubernetes compute betanítási feladataihoz.

A probléma megoldásához hozzárendelheti a felügyelt identitást a számításhoz a számítási csatolási lépésben, vagy hozzárendelheti a felügyelt identitást a számításhoz a csatolás után. További részleteket a Felügyelt identitás hozzárendelése a számítási célhoz című témakörben talál.

Az AzureBlob engedélyezése sikertelen

Ha hozzá kell férnie az AzureBlobhoz az adatok feltöltéséhez vagy letöltéséhez a Kubernetes compute betanítási feladataiban, akkor a feladat a következő hibaüzenettel hiúsul meg:

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

Ennek az az oka, hogy az engedélyezés sikertelen volt, amikor a feladat megpróbálja feltölteni a projektfájlokat az AzureBlobba. A probléma elhárításához ellenőrizze az alábbi elemeket:

  • Győződjön meg arról, hogy a tárfiók engedélyezte a "Megbízható szolgáltatáslistában szereplő Azure-szolgáltatások hozzáférésének engedélyezése ehhez a tárfiókhoz" kivételeket, és a munkaterület szerepel az erőforráspéldányok listájában.
  • Győződjön meg arról, hogy a munkaterület rendelkezik rendszer által hozzárendelt felügyelt identitással.

A privát kapcsolat beállításának ellenőrzéséhez használhatjuk ezt a módszert úgy, hogy bejelentkezünk a Kubernetes-fürt egyik podjába, majd ellenőrizzük a kapcsolódó hálózati beállításokat.

  • Keresse meg a munkaterület-azonosítót az Azure Portalon, vagy kérje le ezt az azonosítót a parancssorban való futtatással az ml workspace show .

  • Az összes azureml-fe pod megjelenítése.kubectl get po -n azureml -l azuremlappname=azureml-fe

  • Jelentkezzen be bármelyik futtatásba kubectl exec -it -n azureml {scorin_fe_pod_name} bash.

  • Ha a fürt nem használ proxyfuttatást nslookup {workspace_id}.workspace.{region}.api.azureml.ms. Ha helyesen állított be privát kapcsolatot a virtuális hálózatról a munkaterületre, akkor a virtuális hálózat belső IP-címét a DNSLookup eszközzel kell megválaszolni.

  • Ha a fürt proxyt használ, megpróbálhatja a munkaterületet curl

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

Ha a proxy és a munkaterület megfelelően van beállítva egy privát hivatkozással, meg kell kísérelnie a belső IP-címhez való csatlakozást. Ebben a forgatókönyvben HTTP 401 állapotkóddal rendelkező válasz várható, ha nincs megadva jogkivonat.

Egyéb ismert problémák

A Kubernetes számítási frissítése nem lép érvénybe

A CLI v2 és az SDK v2 jelenleg nem teszi lehetővé egy meglévő Kubernetes-számítás konfigurációjának frissítését. A névtér módosítása például nem lép érvénybe.

A munkaterület vagy az erőforráscsoport neve "-" végződéssel végződik

Az "InternalServerError" hiba gyakori oka olyan számítási feladatok létrehozásakor, mint az üzembe helyezések, a végpontok vagy a feladatok a Kubernetes-számításban, a munkaterület vagy az erőforráscsoport nevének végén található speciális karakterek, például a "-" karakter.

Következő lépések