Middle
Wat gebeurt er als de liveness-test in Kubernetes niet slaagt?
sobes.tech AI
Antwoord van AI
Als de pod de liveness-proef niet doorstaat, voert Kubernetes de actie uit die in het manifest van de pod is gespecificeerd. Standaard wordt de container opnieuw gestart.
Mogelijke acties bij een falende liveness-proef:
- Herstart: Herstart de container binnen de pod. Dit is de standaardactie.
- Geen: Kubernetes onderneemt geen actie bij een falende liveness-proef. De container blijft in de huidige staat (
RunningofCrashing). - Uitvoeren commando: Voer een specifiek commando uit binnen de container. Als het commando eindigt met een niet-nul terugkeerwaarde, wordt de liveness-proef als mislukt beschouwd.
Scenario met de standaardactie (Herstart):
- kubelet op de node controleert regelmatig de container met behulp van de liveness-proef.
- De voorwaarde van de liveness-proef wordt niet voldaan (bijvoorbeeld, de HTTP-server reageert niet, het commando eindigt met een fout).
- kubelet registreert de fout van de proef.
- Na een aantal mislukte pogingen (geconfigureerd via de parameters
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds) bepaalt kubelet dat de container defect is. - kubelet stuurt het signaal
SIGKILLnaar de defecte container. - De container wordt beëindigd.
- kubelet start de container opnieuw in dezelfde pod.
- Het liveness-proces wordt hervat.
Het is belangrijk om onderscheid te maken tussen de liveness-proef en de readiness-proef. De readiness-proef bepaalt of de container klaar is om verkeer te ontvangen. Een mislukking van de readiness-proef zorgt ervoor dat de Service geen verkeer naar deze pod-voorbeeld stuurt, maar de container wordt niet opnieuw gestart. Een mislukking van de liveness-proef duidt op een storing en vereist een herstart.
# Voorbeeld van een liveness-proef in spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Vertraging voor de eerste controle
periodSeconds: 20 # Interval tussen controles
timeoutSeconds: 5 # Wachtduur op antwoord
failureThreshold: 3 # Aantal mislukte pogingen voor herstart