Az Azure Container Instances gyakori hibáinak elhárítása
Ez a cikk bemutatja, hogyan háríthatja el a tárolók Azure Container Instancesben való kezelésével vagy üzembe helyezésével kapcsolatos gyakori problémákat. Lásd még a gyakori kérdéseket.
Ha további támogatásra van szüksége, tekintse meg az Azure Portalon elérhető súgó+ támogatási lehetőségeket.
A tárolócsoport üzembe helyezése során felmerülő problémák
Elnevezési konvenciók
A tároló specifikációinak meghatározásakor bizonyos paramétereknek meg kell felelnie az elnevezési korlátozásoknak. Az alábbi táblázat a tárolócsoport tulajdonságaira vonatkozó konkrét követelményeket mutatja be. További információkért lásd az Azure Architecture Center elnevezési konvencióit , valamint az Azure-erőforrások elnevezési szabályait és korlátozásait.
Hatókör | Hossz | Kis- és nagybetűk | Érvényes karakterek | Javasolt minta | Példa |
---|---|---|---|---|---|
Tároló neve1 | 1–63 | Kisbetűs | Alfanumerikus és kötőjel bárhol, kivéve az első vagy az utolsó karaktert | <name>-<role>-container<number> |
web-batch-container1 |
Tárolóportok | 1 és 65535 között | Egész | Egész szám 1 és 65535 között | <port-number> |
443 |
DNS-névcímke | 5-63 | Kis- és nagybetűk megkülönböztetése nélkül | Alfanumerikus és kötőjel bárhol, kivéve az első vagy az utolsó karaktert | <name> |
frontend-site1 |
Környezeti változó | 1–63 | Kis- és nagybetűk megkülönböztetése nélkül | Alfanumerikus és aláhúzásjel (_) az első vagy az utolsó karakter kivételével bárhol | <name> |
MY_VARIABLE |
Kötet neve | 5-63 | Kisbetűs | Alfanumerikus és kötőjelek bárhol, kivéve az első vagy az utolsó karaktert. Nem tartalmazhat két egymást követő kötőjelet. | <name> |
batch-output-volume |
1A tárolócsoportok nevének korlátozása, ha nincs megadva a tárolópéldánytól függetlenül, például parancstelepítések esetén az container create
.
A rendszerkép operációsrendszer-verziója nem támogatott
Ha olyan rendszerképet ad meg, amelyet az Azure Container Instances nem támogat, a OsVersionNotSupported
rendszer hibát ad vissza. A hiba a következőhöz hasonló, ahol {0}
az üzembe helyezni kívánt rendszerkép neve látható:
{
"error": {
"code": "OsVersionNotSupported",
"message": "The OS version of image '{0}' is not supported."
}
}
Ez a hiba leggyakrabban az 1709-es vagy 1803-es féléves csatornakiadáson alapuló Windows-rendszerképek telepítésekor jelentkezik, amelyek nem támogatottak. Az Azure Container Instancesben támogatott Windows-rendszerképekért tekintse meg a gyakori kérdéseket.
Képet nem lehet kihúzni
Ha az Azure Container Instances kezdetben nem tudja lekérni a rendszerképet, újrapróbálkozza az időt. Ha a rendszerkép lekérési művelete továbbra is sikertelen, az ACI végül meghiúsul az üzembe helyezés során, és hibaüzenet jelenhet meg Failed to pull image
.
A probléma megoldásához törölje a tárolópéldányt, és próbálkozzon újra az üzembe helyezéssel. Győződjön meg arról, hogy a rendszerkép létezik a beállításjegyzékben, és helyesen adta meg a rendszerkép nevét.
Ha a rendszerkép nem húzható le, az az container show kimenetében az alábbihoz hasonló események jelennek meg:
"events": [
{
"count": 3,
"firstTimestamp": "2017-12-21T22:56:19+00:00",
"lastTimestamp": "2017-12-21T22:57:00+00:00",
"message": "pulling image \"mcr.microsoft.com/azuredocs/aci-hellowrld\"",
"name": "Pulling",
"type": "Normal"
},
{
"count": 3,
"firstTimestamp": "2017-12-21T22:56:19+00:00",
"lastTimestamp": "2017-12-21T22:57:00+00:00",
"message": "Failed to pull image \"mcr.microsoft.com/azuredocs/aci-hellowrld\": rpc error: code 2 desc Error: image t/aci-hellowrld:latest not found",
"name": "Failed",
"type": "Warning"
},
{
"count": 3,
"firstTimestamp": "2017-12-21T22:56:20+00:00",
"lastTimestamp": "2017-12-21T22:57:16+00:00",
"message": "Back-off pulling image \"mcr.microsoft.com/azuredocs/aci-hellowrld\"",
"name": "BackOff",
"type": "Normal"
}
],
Az erőforrás nem érhető el hiba
Az Azure eltérő regionális erőforrás-terhelése miatt a következő hibaüzenet jelenhet meg egy tárolópéldány üzembe helyezésekor:
The requested resource with 'x' CPU and 'y.z' GB memory is not available in the location 'example region' at this moment. Please retry with a different resource request or in another location.
Ez a hiba azt jelzi, hogy a telepítést megkísérlõ régió nagy terhelése miatt a tárolóhoz megadott erőforrások jelenleg nem foglalhatók le. A probléma megoldásához használja az alábbi megoldási lépéseket.
- Ellenőrizze, hogy a tároló üzembehelyezési beállításai az Azure Container Instances régióbeli rendelkezésre állásában meghatározott paraméterek közé tartoznak-e
- A tároló alacsonyabb processzor- és memóriabeállításainak megadása
- Üzembe helyezés egy másik Azure-régióban
- Üzembe helyezés későbbi időpontban
A tárolócsoport futtatókörnyezetében felmerülő problémák
A tároló külön újraindítást kapott explicit felhasználói bevitel nélkül
A tárolócsoportok explicit felhasználói bevitel nélkül való újraindításának két átfogó kategóriája van. Először is előfordulhat, hogy a tárolók újraindulnak egy alkalmazásfolyamat összeomlása miatt. Az ACI szolgáltatás olyan megfigyelhetőségi megoldásokat javasol, mint az Application Insights SDK, a tárolócsoportmetrikák és a tárolócsoportnaplók, hogy megállapítsa , miért tapasztaltak problémákat az alkalmazás. Másodszor, az ügyfelek karbantartási események miatt az ACI-infrastruktúra által kezdeményezett újraindításokat tapasztalhatnak. Az alkalmazás rendelkezésre állásának növeléséhez futtasson több tárolócsoportot egy bejövő összetevő, például egy Application Gateway vagy a Traffic Manager mögött.
A tároló folyamatosan kilép és újraindul (nem hosszan futó folyamat)
A tárolócsoportok alapértelmezés szerint az Always újraindítási házirendjéhez vannak beállítva, így a tárolócsoport tárolói mindig újraindulnak a befejezés után. Előfordulhat, hogy ezt onFailure-ra vagy Never (Soha) állapotra kell módosítania, ha feladatalapú tárolókat szeretne futtatni. Ha megadja az OnFailure-t , és továbbra is folyamatos újraindításokat lát, előfordulhat, hogy probléma merül fel a tárolóban végrehajtott alkalmazással vagy szkripttel kapcsolatban.
Ha tárolócsoportokat futtat hosszú ideig futó folyamatok nélkül, előfordulhat, hogy ismétlődő kilépések és újraindítások láthatók olyan rendszerképekkel, mint az Ubuntu vagy az Alpine. Az EXEC-n keresztüli csatlakozás nem működik, mivel a tároló nem tartja életben a folyamatot. A probléma megoldásához adjon meg egy indítási parancsot, például az alábbi példát a tárolócsoport üzembe helyezéséhez a tároló futásának fenntartása érdekében.
## Deploying a Linux container
az container create -g MyResourceGroup --name myapp --image ubuntu --command-line "tail -f /dev/null"
## Deploying a Windows container
az container create -g myResourceGroup --name mywindowsapp --os-type Windows --image mcr.microsoft.com/windows/servercore:ltsc2019
--command-line "ping -t localhost"
A Container Instances API és az Azure Portal tartalmaz egy tulajdonságot restartCount
. A tároló újraindításainak számának ellenőrzéséhez használhatja az az container show parancsot az Azure CLI-ben. A következő példakimenetben, amelyet a rövidség kedvéért csonkoltunk, a restartCount
kimenet végén láthatja a tulajdonságot.
...
"events": [
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:06+00:00",
"lastTimestamp": "2017-11-13T21:20:06+00:00",
"message": "Pulling: pulling image \"myregistry.azurecr.io/aci-tutorial-app:v1\"",
"type": "Normal"
},
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:14+00:00",
"lastTimestamp": "2017-11-13T21:20:14+00:00",
"message": "Pulled: Successfully pulled image \"myregistry.azurecr.io/aci-tutorial-app:v1\"",
"type": "Normal"
},
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:14+00:00",
"lastTimestamp": "2017-11-13T21:20:14+00:00",
"message": "Created: Created container with id bf25a6ac73a925687cafcec792c9e3723b0776f683d8d1402b20cc9fb5f66a10",
"type": "Normal"
},
{
"count": 1,
"firstTimestamp": "2017-11-13T21:20:14+00:00",
"lastTimestamp": "2017-11-13T21:20:14+00:00",
"message": "Started: Started container with id bf25a6ac73a925687cafcec792c9e3723b0776f683d8d1402b20cc9fb5f66a10",
"type": "Normal"
}
],
"previousState": null,
"restartCount": 0
...
}
Feljegyzés
A Linux-disztribúciók tárolólemezképeinek többsége alapértelmezett parancsként egy rendszerhéjat (például bash) állít be. Mivel a rendszerhéj önmagában nem hosszú ideig futó szolgáltatás, ezek a tárolók azonnal kilépnek, és az alapértelmezett Always újraindítási szabályzattal konfigurálva újraindítási ciklusba kerülnek.
A tároló indítása hosszú időt vesz igénybe
Az Azure Container Instances tárolóindítási idejéhez hozzájáruló három elsődleges tényező:
A Windows rendszerképek további szempontokat is figyelembe vetek.
Képméret
Ha a tároló elindítása hosszú időt vesz igénybe, de végül sikerül, először vizsgálja meg a tároló lemezképének méretét. Mivel az Azure Container Instances igény szerint lekéri a tárolórendszerképet, a megjelenő indítási idő közvetlenül a méretéhez kapcsolódik.
A tárolólemezkép méretét a docker images
Docker parancssori felületének parancsával tekintheti meg:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/azuredocs/aci-helloworld latest 7367f3256b41 15 months ago 67.6MB
A képméretek kis méretűek tartásának kulcsa annak biztosítása, hogy a végső kép ne tartalmazzon olyan elemet, amely futásidőben nem szükséges. Ennek egyik módja a többfázisú buildek. A többfázisú buildek megkönnyítik annak biztosítását, hogy a végső lemezkép csak az alkalmazáshoz szükséges összetevőket tartalmazza, és ne tartalmazza a buildeléskor szükséges további tartalmakat.
Kép helye
A rendszerkép lekérésének a tároló indítási idejére gyakorolt hatásának csökkentésére az is lehetséges, ha a tárolórendszerképet ugyanabban a régióban üzemelteti az Azure Container Registryben, ahol tárolópéldányokat kíván üzembe helyezni. Ez lerövidíti a tárolólemezkép által igényelt hálózati útvonalat, jelentősen lerövidítve a letöltési időt.
Gyorsítótárazott képek
Az Azure Container Instances gyorsítótárazási mechanizmussal felgyorsítja a tároló indítási idejét a windowsos alaprendszerképekre épülő rendszerképek esetében, beleértve a nanoserver:1809
. servercore:ltsc2019
servercore:1809
Gyakran használt Linux-rendszerképek, például ubuntu:1604
és alpine:3.6
gyorsítótárazva is vannak. Windows és Linux rendszerképek esetén ne használja a címkét latest
. Útmutatásért tekintse át a Tárolóregisztrációs adatbázis rendszerképcímkéjének ajánlott eljárásait . A gyorsítótárazott képek és címkék naprakész listájához használja a Gyorsítótáras képek listázása API-t.
Feljegyzés
A Windows Server 2019-alapú rendszerképek használata az Azure Container Instancesben előzetes verzióban érhető el.
A Windows-tárolók lassú hálózatkészség
A kezdeti létrehozáskor előfordulhat, hogy a Windows-tárolók legfeljebb 30 másodpercig (ritka esetekben hosszabb ideig) nem rendelkeznek bejövő vagy kimenő kapcsolattal. Ha a tárolóalkalmazásnak internetkapcsolatra van szüksége, adjon hozzá késleltetési és újrapróbálkozási logikát, hogy 30 másodpercig engedélyezhesse az internetkapcsolatot. A kezdeti beállítás után a tárolóhálózat-hálózatnak megfelelően kell folytatódnia.
Nem tud csatlakozni az alapul szolgáló Docker API-hoz, és nem futtatható kiemelt tárolók
Az Azure Container Instances nem teszi elérhetővé a tárolócsoportokat üzemeltető mögöttes infrastruktúrához való közvetlen hozzáférést. Ez magában foglalja a tároló futtatókörnyezethez való hozzáférést, a vezénylési technológiát és a kiemelt tárolóműveletek futtatását. Az ACI által támogatott műveletek megtekintéséhez tekintse meg a REST referenciadokumentációját. Ha valami hiányzik, küldjön egy kérést az ACI visszajelzési fórumain.
Előfordulhat, hogy a tárolócsoport IP-címe nem érhető el az eltérő portok miatt
Az Azure Container Instances még nem támogatja a portleképezést, mint a szokásos Docker-konfigurációval. Ha úgy találja, hogy egy tárolócsoport IP-címe nem érhető el, ha úgy véli, hogy az nem érhető el, győződjön meg arról, hogy konfigurálta a tárolórendszerképet, hogy a tulajdonsággal ports
a tárolócsoportban közzétett portokat hallgassa meg.
Ha ellenőrizni szeretné, hogy az Azure Container Instances képes-e figyelni a tárolólemezképben konfigurált portot, tesztelje a aci-helloworld
portot elérhetővé tevő lemezkép üzembe helyezését. Futtassa az aci-helloworld
alkalmazást úgy is, hogy a porton figyeljen. aci-helloworld
Elfogad egy opcionális környezeti változót PORT
, amely felülbírálja a figyelt alapértelmezett 80-at. A 9000-s port teszteléséhez például állítsa be a környezeti változót a tárolócsoport létrehozásakor:
Állítsa be a tárolócsoportot a 9000-es port felfedésére, és adja meg a portszámot a környezeti változó értékeként. A példa a Bash-rendszerhéjhoz van formázva. Ha egy másik rendszerhéjat, például a PowerShellt vagy a parancssort részesíti előnyben, ennek megfelelően módosítania kell a változók hozzárendelését.
az container create --resource-group myResourceGroup \ --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld \ --ip-address Public --ports 9000 \ --environment-variables 'PORT'='9000'
Keresse meg a tárolócsoport IP-címét a parancs kimenetében
az container create
. Keresse meg az IP értékét.A tároló sikeres kiépítése után keresse meg a tárolóalkalmazás IP-címét és portját a böngészőben, például:
192.0.2.0:9000
.Ekkor megjelenik a webalkalmazás által megjelenített "Üdvözli az Azure Container Instances!" üzenet.
Ha végzett a tárolóval, távolítsa el a
az container delete
következő paranccsal:az container delete --resource-group myResourceGroup --name mycontainer
A bizalmas tárolócsoportok üzembe helyezése során felmerülő problémák
Szabályzathibák egyéni CCE-szabályzat használata közben
Az egyéni CCE-szabályzatokat létre kell hozni az Azure CLI confcom bővítményével. A szabályzat létrehozása előtt győződjön meg arról, hogy az ARM-sablonban megadott összes tulajdonság érvényes, és megegyezik azzal, amit egy bizalmas számítástechnikai szabályzatban elvár. Az érvényesítendő tulajdonságok közé tartozik a tárolórendszerkép, a környezeti változók, a kötet csatlakoztatása és a tárolóparancsok.
Hiányzó kivonat a szabályzatból
Az Azure CLI-konferenciabővítmény gyorsítótárazott lemezképeket használ a helyi gépen, amelyek nem feltétlenül egyeznek a távolról elérhető lemezképekkel, ami rétegeltérést eredményezhet a szabályzat érvényesítésekor. Győződjön meg arról, hogy eltávolítja a régi lemezképeket, és lekéri a legújabb tárolólemezképeket a helyi környezetbe. Ha biztos abban, hogy a legújabb SHA-t használja, újra kell generálnia a CCE-szabályzatot.
Kilépési kóddal leállított folyamat/tároló: 139
Ez a kilépési kód az Ubuntu 22.04-es alaprendszerképének korlátozásai miatt következik be. A probléma megoldásához ajánlott egy másik alaprendszerképet használni.
Következő lépések
Megtudhatja, hogyan kérdezheti le a tárolónaplókat és eseményeket a tárolók hibakereséséhez.