Konfigurace testů připravenosti
U kontejnerizovaných aplikací, které obsluhují provoz, můžete chtít ověřit, že je kontejner připravený ke zpracování příchozích požadavků. Služba Azure Container Instances podporuje testy připravenosti, aby zahrnovaly konfigurace, aby se ke kontejneru za určitých podmínek nemohl získat přístup. Sonda připravenosti se chová jako sonda připravenosti Kubernetes. Například aplikace typu kontejner může během spuštění potřebovat načíst velkou sadu dat a nechcete, aby během této doby přijímala požadavky.
Tento článek vysvětluje, jak nasadit skupinu kontejnerů, která zahrnuje sondu připravenosti, aby kontejner přijímal provoz pouze v případě úspěšného testu.
Služba Azure Container Instances podporuje také sondy aktivity, které můžete nakonfigurovat tak, aby způsobily automatické restartování kontejneru, který není v pořádku.
Konfigurace YAML
Jako příklad vytvořte readiness-probe.yaml
soubor s následujícím fragmentem kódu, který obsahuje sondu připravenosti. Tento soubor definuje skupinu kontejnerů, která se skládá z kontejneru, ve kterém běží malá webová aplikace. Aplikace se nasadí z veřejné mcr.microsoft.com/azuredocs/aci-helloworld
image. Tato kontejnerizovaná aplikace je také ukázkou nasazení instance kontejneru v Azure pomocí Azure CLI a dalších rychlých startů.
apiVersion: 2019-12-01
location: eastus
name: readinesstest
properties:
containers:
- name: mycontainer
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld
command:
- "/bin/sh"
- "-c"
- "node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait"
ports:
- port: 80
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
readinessProbe:
exec:
command:
- "cat"
- "/tmp/ready"
periodSeconds: 5
osType: Linux
restartPolicy: Always
ipAddress:
type: Public
ports:
- protocol: tcp
port: '80'
tags: null
type: Microsoft.ContainerInstance/containerGroups
Spustit – příkaz
Nasazení zahrnuje command
vlastnost definující spouštěcí příkaz, který se spustí při prvním spuštění kontejneru. Tato vlastnost přijímá pole řetězců. Tento příkaz simuluje čas spuštění webové aplikace, ale kontejner není připravený.
Nejprve spustí relaci prostředí a spustí node
příkaz pro spuštění webové aplikace. Spustí také příkaz pro režim spánku po dobu 240 sekund, po kterém vytvoří soubor volaný ready
v rámci /tmp
adresáře:
node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait
Příkaz připravenosti
Tento soubor YAML definuje readinessProbe
příkaz, který podporuje exec
příkaz připravenosti, který funguje jako kontrola připravenosti. Tento příklad příkazu připravenosti testuje existenci ready
souboru v /tmp
adresáři.
ready
Pokud soubor neexistuje, příkaz připravenosti se ukončí s nenulovou hodnotou. Kontejner bude dál spuštěný, ale není k němu přístup. Po úspěšném ukončení příkazu s ukončovacím kódem 0 je kontejner připravený k přístupu.
Vlastnost periodSeconds
určuje příkaz připravenosti by se měl spustit každých 5 sekund. Sonda připravenosti se spustí po celou dobu životnosti skupiny kontejnerů.
Příklad nasazení
Spuštěním následujícího příkazu nasaďte skupinu kontejnerů s předchozí konfigurací YAML:
az container create --resource-group myResourceGroup --file readiness-probe.yaml
Zobrazení kontrol připravenosti
V tomto příkladu během prvních 240 sekund příkaz připravenosti selže, když zkontroluje ready
existenci souboru. Stavový kód vrátil signály, že kontejner není připravený.
Tyto události je možné zobrazit na webu Azure Portal nebo v Azure CLI. Například portál zobrazuje události typu Unhealthy
, které se aktivují při selhání příkazu připravenosti.
Ověření připravenosti kontejneru
Po spuštění kontejneru můžete ověřit, že není zpočátku přístupný. Po zřízení získejte IP adresu skupiny kontejnerů:
az container show --resource-group myResourceGroup --name readinesstest --query "ipAddress.ip" --out tsv
Pokuste se získat přístup k webu, když sonda připravenosti selže:
wget <ipAddress>
Výstup ukazuje, že web není na začátku přístupný:
wget 192.0.2.1
--2019-10-15 16:46:02-- http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...
Po 240 sekundách bude příkaz připravenosti úspěšný a signalizují, že kontejner je připravený. Když teď spustíte wget
příkaz, proběhne úspěšně:
wget 192.0.2.1
--2019-10-15 16:46:02-- http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...200 OK
Length: 1663 (1.6K) [text/html]
Saving to: ‘index.html.1’
index.html.1 100%[===============================================================>] 1.62K --.-KB/s in 0s
2019-10-15 16:49:38 (113 MB/s) - ‘index.html.1’ saved [1663/1663]
Až bude kontejner připravený, můžete k webové aplikaci přistupovat také tak, že přejdete na IP adresu pomocí webového prohlížeče.
Poznámka:
Sonda připravenosti se bude dál spouštět po celou dobu životnosti skupiny kontejnerů. Pokud příkaz připravenosti později selže, kontejner bude znovu nedostupný.
Další kroky
Sonda připravenosti může být užitečná ve scénářích zahrnujících vícekontenerové skupiny, které se skládají ze závislých kontejnerů. Další informace o scénářích s více kontejnery najdete v tématu Skupiny kontejnerů ve službě Azure Container Instances.