📖 Scenario: You are managing a web application running inside a Kubernetes cluster. To keep the application healthy, you want Kubernetes to check if the app is alive and restart it if it stops responding.
🎯 Goal: Learn how to add a livenessProbe to a Kubernetes pod configuration to automatically detect and recover from application failures.
📋 What You'll Learn
Create a basic pod YAML manifest with a container running nginx
Add a liveness probe configuration using an HTTP GET request
Set probe parameters like initial delay and period
Verify the pod manifest includes the liveness probe correctly
💡 Why This Matters
🌍 Real World
Liveness probes help keep applications running smoothly by letting Kubernetes detect and fix problems automatically.
💼 Career
Understanding liveness probes is essential for Kubernetes administrators and DevOps engineers to maintain healthy containerized applications.
Progress0 / 4 steps
1
Create a basic pod manifest
Create a Kubernetes pod manifest YAML named pod.yaml with a pod named webapp running the nginx:latest container image.
Kubernetes
Hint
Use apiVersion: v1, kind: Pod, and specify metadata.name and spec.containers with the nginx image.
2
Add liveness probe configuration
Add a livenessProbe section under the container in pod.yaml. Use an httpGet probe that checks path / on port 80.
Kubernetes
Hint
Indent livenessProbe under the container and specify httpGet with path and port.
3
Set probe timing parameters
Add initialDelaySeconds: 5 and periodSeconds: 10 under the livenessProbe in pod.yaml to control when and how often the probe runs.
Kubernetes
Hint
Place initialDelaySeconds and periodSeconds at the same level as httpGet inside livenessProbe.
4
Display the final pod manifest
Print the complete contents of pod.yaml to verify the liveness probe is configured correctly.
Kubernetes
Hint
Use multiple print statements to output each line of the YAML manifest exactly as shown.
Practice
(1/5)
1. What is the main purpose of a liveness probe in Kubernetes?
easy
A. To check if a container is alive and restart it if it is not
B. To check if a container is ready to accept traffic
C. To monitor the CPU usage of a container
D. To scale the number of pods automatically
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 A
Quick Check:
Liveness probe = container health check and restart [OK]
But your container keeps restarting even though the app is healthy. What is the most likely cause?
medium
A. The port number 80 is invalid
B. The initialDelaySeconds is too high
C. The probe path /health is incorrect or not responding
D. The failureThreshold is set too high
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 C
Quick Check:
Wrong probe path causes restarts [OK]
Hint: Check probe URL path correctness first [OK]
Common Mistakes:
Changing initialDelaySeconds unnecessarily
Misunderstanding failureThreshold effect
Assuming port 80 is invalid
5. You want to create a liveness probe that checks a TCP port 3306 on your container every 10 seconds, but only start checking after 30 seconds from container start. Which is the correct configuration snippet?
hard
A. "livenessProbe:\n tcpSocket:\n port: '3306'\n initialDelaySeconds: 10\n periodSeconds: 30"
D. "livenessProbe:\n tcpSocket:\n port: 3306\n initialDelaySeconds: 30\n periodSeconds: 10"
Solution
Step 1: Identify TCP socket probe syntax
The tcpSocket probe uses port as a number, with initialDelaySeconds and periodSeconds set 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.