Sundhedstjek (health check)
Også kendt som: health check
En lille automatisk test, gentaget med få sekunders mellemrum, der spørger en kørende tjeneste, om den lever og kan svare.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En fast, gentaget forespørgsel, ofte til en bestemt webadresse eller port, hvis svar fortæller platformen, om en kopi af en tjeneste kører og er klar til arbejde; kopier, der fejler, genstartes eller tages ud af den gruppe, der modtager trafik.
Forklaret enkelt
Som en livredder, der råber til hver svømmer en gang imellem; den, der ikke svarer, bliver hevet op af vandet.
I praksis
På første skoledag tjekker Kubernetes hver kopi af skoleportalens login-tjeneste hvert tiende sekund; én kopi løber tør for hukommelse og holder op med at svare, så den genstartes og får ingen brugere, før den svarer igen.
Hvorfor det betyder noget
Maskiner fejler hele tiden; sundhedstjek lader platformen lede trafikken uden om en defekt kopi på få sekunder, før brugerne mærker det, og før nogen bliver vækket.
Teknisk uddybning
Sundhedstjek besvarer forskellige spørgsmål afhængigt af, hvem der spørger. Kubernetes deler dem op i tre probetyper, som kubelet kører. En liveness-probe spørger, om processen er gået i hårdknude uden mulighed for at komme sig; efter failureThreshold fejl i træk bliver containeren dræbt og genstartet efter pod'ens restart policy. En readiness-probe spørger, om instansen skal modtage trafik lige nu; fejl markerer pod'en som ikke klar og fjerner dens adresse fra Servicens EndpointSlices uden at genstarte noget. En startup-probe sætter, når den er defineret, de to andre på pause, indtil den lykkes, så applikationer med lang opstart ikke bliver dræbt af liveness-tjek under opstarten. Prober kan være httpGet (enhver statuskode fra 200 til og med 399 tæller som succes), tcpSocket, exec (exitkode 0) eller grpc via standardprotokollen gRPC Health Checking, stabil siden Kubernetes 1.27. Standardværdierne er initialDelaySeconds 0, periodSeconds 10, timeoutSeconds 1, successThreshold 1 og failureThreshold 3.
Loadbalancere kører deres egne tjek uafhængigt heraf: cloud-loadbalancere, HAProxy og Envoy prober backends med et fast interval og bruger separate tærskler for sund og usund, som virker som hysterese mod flapping. Envoy og lignende proxyer tilføjer passiv sundhedskontrol (outlier detection), hvor en backend fjernes efter en række reelle fejlede forespørgsler uden nogen syntetisk probe.
Den mest udbredte designfejl er et dybt liveness-tjek, der kalder databasen eller andre tjenester. Når den fælles afhængighed svigter, fejler alle replikaer liveness samtidig, og Kubernetes genstarter hele flåden, så et delvist nedbrud bliver totalt og suppleres af kold-start-belastning. Den gængse anbefaling er at holde liveness overfladisk (processen kan besvare en HTTP-forespørgsel, og dens event loop er ikke låst), lade readiness afspejle, om instansen selv kan udføre nyttigt arbejde, og håndtere fejl i afhængigheder med timeouts, circuit breakers og nedgraderede svar frem for genstarter. Nogle applikationer lader også bevidst readiness fejle, når de modtager SIGTERM, men fortsætter med at betjene forespørgsler i nogle sekunder, så loadbalancere, der først opdager ændrede endpoints med forsinkelse, holder op med at sende trafik, før processen stopper.
Andre faldgruber er timeouts, der er kortere end pauser fra garbage collection, tjek-endpoints, der er dyre eller uden autentificering og samtidig afslører version og afhængigheder, og at opfatte et grønt sundhedstjek som bevis på korrekthed: en tjeneste kan svare 200 på /healthz og samtidig returnere forkerte data. Ekstern syntetisk overvågning, der gennemløber en rigtig brugerrejse udefra, supplerer de interne prober, og resultaterne af sundhedstjek fødes ind i overvågning og alarmering, men erstatter ikke symptombaserede SLO-alarmer.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Tjeneste (service)
- →Sundhedstjek (health check)
Relationer
- Forudsætter
- Tjeneste (service)
- Bruges sammen med
- KubernetesOvervågning (monitoring)Alarmering
Kilder og videre læsning
Officiel dokumentation
- Kubernetes Documentation - Configure Liveness, Readiness and Startup Probes · The Kubernetes Authors
Opslagsværker
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…