📖 Scenario: You are managing a Kubernetes deployment for a simple web application. You want to ensure the application container is healthy by running a command inside the container periodically. This helps Kubernetes know if the container is working properly and restart it if needed.
🎯 Goal: Configure an exec liveness probe in a Kubernetes Pod manifest that runs a command inside the container to check its health.
📋 What You'll Learn
Create a Pod manifest with a container named webapp
Add an exec liveness probe that runs the command ['cat', '/tmp/healthy']
Set the probe to run every 5 seconds
Print the final Pod manifest YAML
💡 Why This Matters
🌍 Real World
Exec probes are used in Kubernetes to check container health by running commands inside containers. This helps keep applications running smoothly by restarting unhealthy containers automatically.
💼 Career
Understanding exec probes is essential for Kubernetes administrators and DevOps engineers to maintain reliable containerized applications.
Progress0 / 4 steps
1
Create the basic Pod manifest
Create a Kubernetes Pod manifest named pod.yaml with a single container named webapp using the image busybox. The container should run the command ['sleep', '3600'] to keep it alive.
Kubernetes
Hint
Use apiVersion: v1, kind: Pod, and define containers with the specified name, image, and command.
2
Add the exec liveness probe configuration
Add a livenessProbe section to the webapp container. Configure it to use an exec command that runs ['cat', '/tmp/healthy'].
Kubernetes
Hint
Under livenessProbe, use exec with a command list containing cat and /tmp/healthy.
3
Set the probe interval
Add the periodSeconds field to the livenessProbe and set it to 5 so the probe runs every 5 seconds.
Kubernetes
Hint
Add periodSeconds: 5 under livenessProbe to set the probe interval.
4
Print the final Pod manifest
Print the complete Pod manifest YAML to verify your configuration.
Kubernetes
Hint
Use a print statement to output the full YAML manifest exactly as configured.
Practice
(1/5)
1. What is the main purpose of an exec probe in Kubernetes?
easy
A. To schedule pods on specific nodes
B. To expose container ports to the outside world
C. To create persistent storage volumes
D. To run a command inside a container to check if it is healthy
Solution
Step 1: Understand exec probe functionality
An exec probe runs a command inside the container to check its health status.
Step 2: Compare with other options
Options A, B, and D relate to scheduling, networking, and storage, not health checks.
Final Answer:
To run a command inside a container to check if it is healthy -> Option D
Quick Check:
Exec probe = runs command inside container [OK]
Hint: Exec probe runs commands inside container to check health [OK]
Common Mistakes:
Confusing exec probe with port exposure
Thinking exec probe schedules pods
Mixing exec probe with storage management
2. Which of the following is the correct syntax snippet to define an exec liveness probe in a pod spec?
easy
A. livenessProbe:\n exec:\n command: ['cat', '/tmp/healthy']\n initialDelaySeconds: 5\n periodSeconds: 10
B. livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 5
C. livenessProbe:\n exec:\n command: 'cat /tmp/healthy'\n initialDelaySeconds: 5
D. livenessProbe:\n exec:\n command: cat /tmp/healthy\n initialDelaySeconds: 5
Solution
Step 1: Check exec command format
The command must be an array of strings, e.g., ['cat', '/tmp/healthy'].
Step 2: Validate YAML structure
livenessProbe:\n exec:\n command: ['cat', '/tmp/healthy']\n initialDelaySeconds: 5\n periodSeconds: 10 correctly uses the array syntax and includes initialDelaySeconds and periodSeconds.
Final Answer:
Correct exec probe with command array and delays -> Option A
Quick Check:
Exec command = array of strings [OK]
Hint: Exec command must be a list of strings in YAML [OK]
Common Mistakes:
Using a single string instead of array for command
Confusing exec probe with httpGet probe
Omitting required indentation or keys
3. Given this exec probe configuration in a pod spec:
Hint: Exec command must be array; single string causes failure [OK]
Common Mistakes:
Ignoring command array syntax errors
Blaming initialDelaySeconds without checking command
Confusing readiness with resource limits
5. You want to configure an exec liveness probe that waits 10 seconds before starting, runs the command ['/bin/check.sh'], retries every 5 seconds, and fails after 3 unsuccessful attempts. Which is the correct YAML snippet?