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


Ü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.

A portál nem megfelelő állapotú eseménye

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 Killinga 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.

Portál újraindítási számlálója

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 Neverhá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.