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
- HIBA: ComputeNotFound
- HIBA: ComputeNotAccessible
- HIBA: InvalidComputeInformation
- HIBA: InvalidComputeNoKubernetesConfiguration
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
- HIBA: ClusterNotReachable
- HIBA: ClusterNotFound
- HIBA: ClusterServiceNotFound
- HIBA: ClusterUnauthorized
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 aazureml
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.
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
- A feladat végrehajtása nem sikerült. E45004
- A feladat végrehajtása nem sikerült. 400
- Adjon meg egy fiókkulcsot vagy egy SAS-tokent
- Az AzureBlob engedélyezése sikertelen
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.
Privát kapcsolati probléma
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.