Üzemelési tesztek konfigurálása
A tárolóalapú alkalmazások hosszabb ideig is futhatnak, ami olyan hibás állapotokat eredményezhet, amelyeket a tároló újraindításával lehet javítani. Az Azure Container Instances támogatja az élőségi mintavételeket, így konfigurálhatja a tárolócsoporton belüli tárolókat az újraindításra, ha a kritikus funkciók nem működnek. Az élőség-mintavétel úgy viselkedik, mint egy Kubernetes liveness-mintavétel.
Ez a cikk azt ismerteti, hogyan helyezhet üzembe egy élőségi mintavételt tartalmazó tárolócsoportot, amely egy szimulált nem kifogástalan tároló automatikus újraindítását mutatja be.
Az Azure Container Instances támogatja a készültségi mintavételeket is, amelyeket úgy konfigurálhat, hogy a forgalom csak akkor érje el a tárolót, ha készen áll rá.
YAML üzembe helyezése
Hozzon létre egy liveness-probe.yaml
fájlt az alábbi kódrészlettel. Ez a fájl egy olyan tárolócsoportot határoz meg, amely egy NGINX-tárolóból áll, amely végül nem megfelelő állapotúvá válik.
apiVersion: 2019-12-01
location: eastus
name: livenesstest
properties:
containers:
- name: mycontainer
properties:
image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
command:
- "/bin/sh"
- "-c"
- "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"
ports: []
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
livenessProbe:
exec:
command:
- "cat"
- "/tmp/healthy"
periodSeconds: 5
osType: Linux
restartPolicy: Always
tags: null
type: Microsoft.ContainerInstance/containerGroups
Futtassa a következő parancsot a fenti YAML-konfigurációval rendelkező tárolócsoport üzembe helyezéséhez:
az container create --resource-group myResourceGroup --name livenesstest -f liveness-probe.yaml
Start parancs
Az üzembe helyezés tartalmaz egy olyan tulajdonságot command
, amely egy indítási parancsot határoz meg, amely a tároló első futtatásakor fut. Ez a tulajdonság sztringtömböt fogad el. Ez a parancs szimulálja a tárolót, amely nem megfelelő állapotba kerül.
Először elindít egy bash-munkamenetet, és létrehoz egy fájlt healthy
a /tmp
könyvtárban. Ezután 30 másodpercig alszik a fájl törlése előtt, majd beírja a 10 perces alvó üzemmódot:
/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"
Liveness parancs
Ez az üzemelő példány egy livenessProbe
olyan élőségi parancsot támogat exec
, amely az élőség-ellenőrzésként működik. Ha ez a parancs nem nulla értékkel lép ki, a tároló leáll, és újraindul, és nem található a healthy
fájl jelzése. Ha ez a parancs sikeresen kilép a 0-s kilépési kóddal, a rendszer nem hajt végre műveletet.
A periodSeconds
tulajdonság az élőségi parancsot 5 másodpercenként hajtja végre.
Élőségi kimenet ellenőrzése
Az első 30 másodpercben a healthy
start parancs által létrehozott fájl létezik. Amikor az élőség parancs ellenőrzi a healthy
fájl létezését, az állapotkód 0 értéket ad vissza, a sikerességet jelezve, így nem történik újraindítás.
30 másodperc elteltével a cat /tmp/healthy
parancs meghibásodik, ami nem megfelelő állapotot és gyilkos eseményeket okoz.
Ezek az események az Azure Portalon vagy az Azure CLI-ben tekinthetők meg.
Az Események az Azure Portalon való megtekintésével a rendszer aktiválja a típusos Unhealthy
eseményeket, ha az élőségi parancs meghiúsul. A következő esemény típusa Killing
a tároló törlését jelzi, hogy újrainduljon az újraindítás. A tároló újraindítási száma minden alkalommal növekszik, amikor ez az esemény bekövetkezik.
Az újraindítások helyben fejeződnek be, így az erőforrások, például a nyilvános IP-címek és a csomópontspecifikus tartalmak megmaradnak.
Ha az élőség-mintavétel folyamatosan meghiúsul, és túl sok újraindítást indít el, a tároló exponenciális visszalépési késleltetést léptet be.
Liveness-mintavételek és újraindítási szabályzatok
Az újraindítási szabályzatok felülírják az élőségi mintavételek által kiváltott újraindítási viselkedést. Ha például beállít egy restartPolicy = Never
és egy élőségi mintavételt, a tárolócsoport nem indul újra egy sikertelen élőség-ellenőrzés miatt. A tárolócsoport ehelyett a tárolócsoport újraindítási Never
házirendjét követi.
Következő lépések
A feladatalapú forgatókönyvekhez szükség lehet egy élőségi mintavételre az automatikus újraindítás engedélyezéséhez, ha egy előfeltételes függvény nem működik megfelelően. A feladatalapú tárolók futtatásával kapcsolatos további információkért lásd : Tárolóalapú feladatok futtatása az Azure Container Instancesben.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: