Konfigurera beredskapsavsökning
För containerbaserade program som hanterar trafik kanske du vill kontrollera att containern är redo att hantera inkommande begäranden. Azure Container Instances stöder beredskapsavsökningar för att inkludera konfigurationer så att containern inte kan nås under vissa förhållanden. Beredskapsavsökningen fungerar som en Kubernetes-beredskapsavsökning. Ett containerprogram kan till exempel behöva läsa in en stor datauppsättning under starten och du vill inte att den ska ta emot begäranden under den här tiden.
Den här artikeln beskriver hur du distribuerar en containergrupp som innehåller en beredskapsavsökning, så att en container endast tar emot trafik när avsökningen lyckas.
Azure Container Instances stöder också liveness-avsökningar, som du kan konfigurera för att orsaka att en container med feltillstånd startas om automatiskt.
YAML-konfiguration
Skapa till exempel en readiness-probe.yaml
fil med följande kodfragment som innehåller en beredskapsavsökning. Den här filen definierar en containergrupp som består av en container som kör en liten webbapp. Appen distribueras från den offentliga mcr.microsoft.com/azuredocs/aci-helloworld
avbildningen. Den här containerbaserade appen visas också i Distribuera en containerinstans i Azure med hjälp av Azure CLI och andra snabbstarter.
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
Startkommando
Distributionen innehåller en command
egenskap som definierar ett startkommando som körs när containern först börjar köras. Den här egenskapen accepterar en matris med strängar. Det här kommandot simulerar en tid när webbappen körs men containern inte är redo.
Först startar den en shell-session och kör ett node
kommando för att starta webbappen. Det startar också ett kommando i viloläge i 240 sekunder, varefter en fil som anropas ready
i /tmp
katalogen skapas:
node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait
Beredskapskommando
Den här YAML-filen definierar en readinessProbe
som stöder ett exec
beredskapskommando som fungerar som beredskapskontroll. I det här exemplet testas beredskapskommandot för förekomsten av ready
filen i /tmp
katalogen.
ready
När filen inte finns avslutas beredskapskommandot med ett värde som inte är noll. Containern fortsätter att köras men kan inte nås. När kommandot avslutas med slutkod 0 är containern redo att nås.
Egenskapen periodSeconds
anger att beredskapskommandot ska köras var 5:e sekund. Beredskapsavsökningen körs under containergruppens livslängd.
Exempel på distribution
Kör följande kommando för att distribuera en containergrupp med den föregående YAML-konfigurationen:
az container create --resource-group myResourceGroup --file readiness-probe.yaml
Visa beredskapskontroller
I det här exemplet misslyckas beredskapskommandot under de första 240 sekunderna när det söker ready
efter filens existens. Statuskoden returnerade signaler om att containern inte är redo.
Dessa händelser kan visas från Azure-portalen eller Azure CLI. Portalen visar till exempel att händelser av typen Unhealthy
utlöses när beredskapskommandot misslyckas.
Verifiera containerberedskap
När du har startat containern kan du kontrollera att den inte är tillgänglig från början. Efter etableringen hämtar du IP-adressen för containergruppen:
az container show --resource-group myResourceGroup --name readinesstest --query "ipAddress.ip" --out tsv
Försök att komma åt platsen medan beredskapsavsökningen misslyckas:
wget <ipAddress>
Utdata visar att webbplatsen inte är tillgänglig från början:
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...
Efter 240 sekunder lyckas beredskapskommandot, vilket signalerar att containern är klar. När du kör wget
kommandot lyckas det nu:
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]
När containern är klar kan du också komma åt webbappen genom att bläddra till IP-adressen med hjälp av en webbläsare.
Kommentar
Beredskapsavsökningen fortsätter att köras under containergruppens livslängd. Om beredskapskommandot misslyckas vid ett senare tillfälle blir containern återigen otillgänglig.
Nästa steg
En beredskapsavsökning kan vara användbar i scenarier som involverar grupper med flera containrar som består av beroende containrar. Mer information om scenarier med flera containrar finns i Containergrupper i Azure Container Instances.