What if your app could fix itself before you even notice a problem?
Why Liveness probe concept in Kubernetes? - Purpose & Use Cases
Imagine you have a web app running on a server. Sometimes, it freezes or crashes silently without stopping the server. You have to check manually if it is still working by opening the app or looking at logs.
Manually checking if your app is alive is slow and tiring. You might miss the freeze and users get stuck. Restarting the app late means downtime and unhappy users. It's like waiting for a car to break down before fixing it.
Liveness probes automatically check if your app is healthy. If the app is stuck or crashed, Kubernetes restarts it right away. This keeps your app running smoothly without you lifting a finger.
kubectl logs myapp
# Manually check logs and restart if neededlivenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10It enables your app to heal itself automatically, reducing downtime and keeping users happy.
A shopping website uses liveness probes to restart the payment service instantly if it freezes, so customers never face errors during checkout.
Manual health checks are slow and unreliable.
Liveness probes automate app health monitoring and recovery.
This leads to more stable and reliable applications.
Practice
liveness probe in Kubernetes?Solution
Step 1: Understand the role of liveness probes
Liveness probes check if a container is still running properly. If not, Kubernetes restarts it to fix issues.Step 2: Differentiate from readiness probes
Readiness probes check if a container can receive traffic, but liveness probes focus on container health and restarting.Final Answer:
To check if a container is alive and restart it if it is not -> Option AQuick Check:
Liveness probe = container health check and restart [OK]
- Confusing liveness probe with readiness probe
- Thinking it scales pods instead of restarting
- Assuming it monitors resource usage
Solution
Step 1: Check HTTP GET syntax for livenessProbe
The correct syntax useshttpGetwithpathand numericport. "livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 5" matches this.Step 2: Identify errors in other options
"livenessProbe:\n exec:\n command: [\"curl\", \"/healthz\"]\n initialDelaySeconds: 5" uses exec with curl incorrectly. "livenessProbe:\n tcpSocket:\n path: /healthz\n port: 8080\n initialDelaySeconds: 5" wrongly uses tcpSocket with a path. "livenessProbe:\n httpGet:\n path: healthz\n port: 'eighty'\n initialDelaySeconds: 5" uses a string for port instead of a number.Final Answer:
"livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 5" -> Option AQuick Check:
HTTP GET probe syntax = "livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 5" [OK]
- Using string instead of number for port
- Adding path to tcpSocket probe
- Using exec command incorrectly
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 3
periodSeconds: 3
What happens if the file /tmp/healthy is deleted inside the container?Solution
Step 1: Understand exec liveness probe behavior
The exec probe runs the command. If the command fails (non-zero exit), Kubernetes restarts the container.Step 2: Effect of deleting /tmp/healthy file
Without the file,cat /tmp/healthyfails, so the probe fails and triggers a restart.Final Answer:
The container will be restarted by Kubernetes -> Option BQuick Check:
Exec probe fails = container restart [OK]
- Thinking pod is deleted permanently
- Assuming probe failure is ignored
- Confusing liveness with readiness probe
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 3
But your container keeps restarting even though the app is healthy. What is the most likely cause?Solution
Step 1: Analyze probe failure reasons
If the probe path is wrong or the app does not respond at /health, the probe fails and restarts the container.Step 2: Check other parameters
Initial delay of 10 seconds is usually enough. Failure threshold of 3 means 3 failures before restart, which is normal. Port 80 is valid.Final Answer:
The probe path /health is incorrect or not responding -> Option CQuick Check:
Wrong probe path causes restarts [OK]
- Changing initialDelaySeconds unnecessarily
- Misunderstanding failureThreshold effect
- Assuming port 80 is invalid
Solution
Step 1: Identify TCP socket probe syntax
The tcpSocket probe usesportas a number, withinitialDelaySecondsandperiodSecondsset as required. "livenessProbe:\n tcpSocket:\n port: 3306\n initialDelaySeconds: 30\n periodSeconds: 10" matches this.Step 2: Check timing and port correctness
"livenessProbe:\n tcpSocket:\n port: 3306\n initialDelaySeconds: 30\n periodSeconds: 10" sets initial delay to 30 seconds and period to 10 seconds, matching the requirement. Other options have wrong timing or use HTTP or exec probes incorrectly.Final Answer:
"livenessProbe:\n tcpSocket:\n port: 3306\n initialDelaySeconds: 30\n periodSeconds: 10" -> Option DQuick Check:
TCP probe with correct timing = "livenessProbe:\n tcpSocket:\n port: 3306\n initialDelaySeconds: 30\n periodSeconds: 10" [OK]
- Using string instead of number for port
- Mixing HTTP probe for TCP check
- Setting wrong initialDelaySeconds or periodSeconds
Ready to prove it?
Pass the test and this pattern moves unknown
