Bird
Raised Fist0
Kubernetesdevops~30 mins

Why probes keep applications healthy in Kubernetes - See It in Action

Choose your learning style10 modes available
Why probes keep applications healthy
📖 Scenario: You are managing a Kubernetes cluster that runs a simple web application. To keep the application healthy and responsive, Kubernetes uses probes to check the application's status regularly.Probes help Kubernetes decide when to restart the application or stop sending traffic to it if it is not working properly.
🎯 Goal: Learn how to define and use Kubernetes probes (liveness and readiness) in a pod configuration to keep the application healthy.
📋 What You'll Learn
Create a basic pod configuration with a container running a simple web server
Add a liveness probe to check if the application is alive
Add a readiness probe to check if the application is ready to serve traffic
Print the final pod configuration YAML
💡 Why This Matters
🌍 Real World
Kubernetes probes help keep applications running smoothly by automatically detecting problems and restarting containers if needed.
💼 Career
Understanding probes is essential for DevOps engineers and site reliability engineers to maintain healthy and reliable applications in production.
Progress0 / 4 steps
1
Create a basic pod configuration
Create a variable called pod_config that holds a dictionary representing a Kubernetes pod configuration with these exact values: apiVersion set to v1, kind set to Pod, metadata with name set to myapp-pod, and spec with one container named myapp-container running the image nginx:1.21.
Kubernetes
Hint

Use nested dictionaries and lists to build the pod configuration.

2
Add a liveness probe
Add a livenessProbe to the container inside pod_config. The probe should use an httpGet action with path set to /healthz, port set to 80, and initialDelaySeconds set to 5.
Kubernetes
Hint

The livenessProbe is a dictionary inside the container dictionary.

3
Add a readiness probe
Add a readinessProbe to the container inside pod_config. The probe should use an httpGet action with path set to /ready, port set to 80, and initialDelaySeconds set to 3.
Kubernetes
Hint

The readinessProbe is similar to the livenessProbe but with different path and delay.

4
Print the final pod configuration
Write a print statement to display the pod_config dictionary.
Kubernetes
Hint

Use print(pod_config) to display the dictionary.

Practice

(1/5)
1. What is the main purpose of a liveness probe in Kubernetes?
easy
A. To check if the application is running and restart it if it is not healthy
B. To control when the application receives user traffic
C. To update the application configuration automatically
D. To monitor the CPU usage of the application

Solution

  1. Step 1: Understand liveness probe role

    Liveness probes check if the app is alive and working properly.
  2. Step 2: Identify action on failure

    If the liveness probe fails, Kubernetes restarts the app to fix it.
  3. Final Answer:

    To check if the application is running and restart it if it is not healthy -> Option A
  4. Quick Check:

    Liveness probe = restarts unhealthy app [OK]
Hint: Liveness probe restarts app if unhealthy [OK]
Common Mistakes:
  • Confusing liveness with readiness probe
  • Thinking liveness controls traffic
  • Assuming liveness updates configs
2. Which of the following is the correct syntax to define a readiness probe in a Kubernetes pod spec?
easy
A. readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10
B. livenessProbe: exec: command: ["curl", "/health"] timeoutSeconds: 3
C. readinessProbe: tcpSocket: port: 80 failureThreshold: 5
D. startupProbe: httpGet: path: /start port: 9090 periodSeconds: 15

Solution

  1. Step 1: Identify readiness probe syntax

    Readiness probes often use httpGet with path and port defined.
  2. Step 2: Match correct YAML structure

    readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10 shows readinessProbe with httpGet, initialDelaySeconds, and periodSeconds correctly.
  3. Final Answer:

    readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10 -> Option A
  4. Quick Check:

    Readiness probe syntax = readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10 [OK]
Hint: Readiness probe uses httpGet with path and port [OK]
Common Mistakes:
  • Mixing liveness and readiness probe syntax
  • Using startupProbe instead of readinessProbe
  • Incorrect indentation or missing fields
3. Given this pod spec snippet, what happens if the readiness probe fails?
readinessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
medium
A. The pod is restarted immediately
B. The pod stops receiving new traffic but keeps running
C. The pod is deleted from the cluster
D. Nothing happens; the pod continues as normal

Solution

  1. Step 1: Understand readiness probe effect

    Readiness probe controls if pod is ready to get user traffic.
  2. Step 2: Identify behavior on failure

    If readiness probe fails, pod stays running but is removed from service endpoints, so no new traffic.
  3. Final Answer:

    The pod stops receiving new traffic but keeps running -> Option B
  4. Quick Check:

    Readiness failure = no traffic, pod runs [OK]
Hint: Readiness failure stops traffic, no restart [OK]
Common Mistakes:
  • Thinking readiness failure restarts pod
  • Confusing readiness with liveness probe
  • Assuming pod deletion on readiness failure
4. You notice your application pod keeps restarting frequently. The liveness probe is defined as:
livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
  failureThreshold: 3
What is the most likely cause?
medium
A. The readiness probe is missing
B. The liveness probe is incorrectly configured with wrong port
C. The pod has insufficient CPU resources
D. The application is not responding to the /health endpoint in time

Solution

  1. Step 1: Analyze liveness probe behavior

    Liveness probe checks /health on port 8080 every 10 seconds after 5 seconds delay.
  2. Step 2: Understand restart cause

    If app does not respond correctly 3 times (failureThreshold), Kubernetes restarts pod.
  3. Final Answer:

    The application is not responding to the /health endpoint in time -> Option D
  4. Quick Check:

    Liveness failure = app not responding, causes restart [OK]
Hint: Liveness failure causes restart due to no response [OK]
Common Mistakes:
  • Assuming readiness probe causes restart
  • Ignoring failureThreshold effect
  • Blaming resource limits without evidence
5. You want to ensure your app only receives traffic after it finishes loading data and is ready. Which probe setup achieves this best?
hard
A. Use a startup probe that immediately sends traffic to the app
B. Use a liveness probe that restarts the app if /health fails
C. Use a readiness probe that checks a /ready endpoint returning success after data load
D. Use both liveness and readiness probes checking the same /health endpoint

Solution

  1. Step 1: Identify probe controlling traffic

    Readiness probe controls when app receives user traffic.
  2. Step 2: Choose probe matching app readiness

    Readiness probe checking /ready after data load ensures traffic only after app is ready.
  3. Step 3: Exclude other options

    Liveness restarts app but does not control traffic; startup probe delays startup but not traffic control.
  4. Final Answer:

    Use a readiness probe that checks a /ready endpoint returning success after data load -> Option C
  5. Quick Check:

    Readiness probe controls traffic flow [OK]
Hint: Readiness probe controls traffic after app is ready [OK]
Common Mistakes:
  • Using liveness probe to control traffic
  • Confusing startup probe with readiness probe
  • Checking same endpoint for both probes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard