Helsesjekker: liveness- og readiness-prober
Konfigurer liveness- og readiness-prober for å sikre at applikasjonene er friske og klare til å håndtere trafikk.
Helsesjekker: liveness- og readiness-prober er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.
Holde apper sunne
Hvordan vet Kubernetes om applikasjonen Deres faktisk fungerer? Det er ikke nok at en container bare kjører; den må være sunn og klar til å håndtere trafikk.
Kubernetes bruker spesielle kontroller som kalles prober for å overvåke applikasjonene Deres. Disse probene bidrar til å sikre at brukerne alltid får en pålitelig tjeneste.
Hva er liveness-prober?
En liveness-probe kontrollerer om applikasjonen fortsatt er aktiv og svarer. Hvis en liveness-probe mislykkes, antar Kubernetes at containeren er usunn og starter den på nytt.
Tenk på det som en pulsmåler: Hvis hjertet stopper, trengs en omstart! Dette bidrar til å gjenopprette etter vranglåser eller krasj i applikasjonen.
Grunnleggende om liveness-prober
De kan konfigurere liveness-prober ved hjelp av ulike metoder:
- HTTP GET: Sender en HTTP-forespørsel til en angitt bane.
- TCP Socket: Kontrollerer om det kan opprettes en TCP-tilkobling til en port.
- Exec Command: Kjører en kommando inne i containeren.
For webapplikasjoner er HTTP GET svært vanlig. Her er et utdrag som viser hvordan De kan definere en slik probe i YAML-filen til en Pod:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 5Liveness-probe i praksis
Denne Python Flask-appen simulerer en usunn tilstand ved å krasje etter to forespørsler til /healthz. Kubernetes-proben oppdager dette og starter containeren på nytt.
Lagre først dette som app.py:
from flask import Flask, Response
import os
import time
app = Flask(__name__)
request_count = 0
@app.route('/healthz')
def health_check():
global request_count
request_count += 1
if request_count > 2:
print("Liveness probe failing! Exiting...")
os._exit(1) # Simulate a crash
print(f"Liveness probe successful (count: {request_count})")
return Response("OK", status=200)
@app.route('/')
def home():
return "Hello from the Liveness Probe Demo!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)Kjøre en liveness-probe
La oss nå se hvordan Kubernetes bruker liveness-proben. Hvis De ruller ut dette med følgende YAML, starter Kubernetes Pod-en på nytt når helsekontrollen mislykkes:
apiVersion: v1
kind: Pod
metadata:
name: liveness-demo
spec:
containers:
- name: liveness-container
image: python:3.9-slim-buster
command: ["python", "app.py"]
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 1
volumeMounts:
- name: app-volume
mountPath: /app
volumes:
- name: app-volume
configMap:
name: liveness-app-config
# (You'd need a ConfigMap for app.py, omitted for brevity)Etter utrulling vil den tredje kontrollen mislykkes etter to vellykkede kontroller, og Kubernetes starter containeren på nytt.
Hva er readiness-prober?
En readiness-probe kontrollerer om applikasjonen Deres er klar til å håndtere trafikk. Hvis en readiness-probe mislykkes, slutter Kubernetes å sende trafikk til Pod-en, men starter den ikke på nytt.
Dette er avgjørende under oppstart (for eksempel mens applikasjonen venter på en databasetilkobling) eller ved kontrollert avslutning. Tenk: «Er butikken åpen for kunder?»
Grunnleggende om readiness-prober
Readiness-prober konfigureres på lignende måte som liveness-prober, ved hjelp av HTTP GET, TCP Socket eller Exec-kommandoer. Den viktigste forskjellen er virkningen:
- Liveness: Starter containeren på nytt ved feil.
- Readiness: Fjerner Pod-en fra tjenestens endepunkter ved feil (ingen trafikk).
Her er et utdrag for en readiness-probe:
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 5Readiness-probe i praksis
Denne Flask-appen simulerer en applikasjon som trenger litt tid på å initialiseres (for eksempel for å koble til en database). Den rapporterer «ready» først etter 5 sekunder.
Lagre dette som ready_app.py:
from flask import Flask, Response
import time
app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5
@app.route('/ready')
def readiness_check():
if time.time() - start_time > READY_AFTER_SECONDS:
print("Readiness probe successful: App is ready!")
return Response("READY", status=200)
else:
print("Readiness probe failing: App not ready yet...")
return Response("NOT READY", status=503)
@app.route('/')
def home():
return "Hello from the Readiness Probe Demo!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)Kjøre readiness-probe
Når Pod-en distribueres med denne YAML-konfigurasjonen, vil den ikke motta trafikk i de første initialDelaySeconds-sekundene, pluss tiden det tar før /ready returnerer 200 OK.
apiVersion: v1
kind: Pod
metadata:
name: readiness-demo
spec:
containers:
- name: readiness-container
image: python:3.9-slim-buster
command: ["python", "ready_app.py"]
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 3
volumeMounts:
- name: app-volume
mountPath: /app
volumes:
- name: app-volume
configMap:
name: readiness-app-config
# (You'd need a ConfigMap for ready_app.py, omitted for brevity)Dette sikrer at trafikken bare går til instanser som faktisk er klare.
Liveness-probe kontra readiness-probe
Det er viktig å bruke begge probe-typene riktig:
- Liveness-probe: Brukes til å oppdage om applikasjonen har krasjet eller er i en tilstand den ikke kan komme seg ut av. Hvis den mislykkes, starter Kubernetes containeren på nytt.
- Readiness-probe: Brukes til å oppdage om applikasjonen er klar til å motta og behandle forespørsler. Hvis den mislykkes, slutter Kubernetes å sende trafikk til Pod-en.
De har ulike, men utfyllende formål som bidrar til å holde applikasjonene robuste.
Test forståelsen
Hvilke av følgende påstander om liveness- og readiness-prober er SANNE?
Prober: Viktigste punkter
I denne leksjonen har du lært om liveness- og readiness-prober i Kubernetes. Disse helsesjekkene er avgjørende for å opprettholde påliteligheten og tilgjengeligheten til applikasjonene dine:
- Liveness-prober oppdager usunne containere og utløser omstarter.
- Readiness-prober styrer når en Pod er klar til å motta nettverkstrafikk.
Effektiv bruk av dem sikrer at applikasjonene alltid svarer og tåler problemer.
Lær deg DevOps-bootcamp med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 142
- Leksjoner
- 568
Ofte stilte spørsmål
Er leksjonen «Helsesjekker: liveness- og readiness-prober» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Helsesjekker: liveness- og readiness-prober», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.
Hva lærer jeg i «Helsesjekker: liveness- og readiness-prober»?
Konfigurer liveness- og readiness-prober for å sikre at applikasjonene er friske og klare til å håndtere trafikk. Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med DevOps-bootcamp?
Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Helsesjekker: liveness- og readiness-prober»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?
Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Logging med kubectl logs
- Måltall med Prometheus og Grafana
- Helsesjekker: liveness- og readiness-prober
- Distribuert sporing og hendelser