Bird
Raised Fist0
Kubernetesdevops~5 mins

Probe failure and container restart behavior in Kubernetes - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes containers in Kubernetes stop working properly. Probes help check if a container is healthy. If a probe fails, Kubernetes can restart the container to fix problems automatically.
When you want to automatically restart a web server if it stops responding.
When you need to check if a database container is ready before sending traffic.
When you want to detect if a container is stuck and recover it without manual intervention.
When you want to avoid sending requests to a container that is not ready to serve.
When you want to monitor container health and improve application reliability.
Config File - pod.yaml
pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx:1.23
    livenessProbe:
      httpGet:
        path: /healthz
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 3
    readinessProbe:
      httpGet:
        path: /ready
        port: 80
      initialDelaySeconds: 3
      periodSeconds: 5
      failureThreshold: 3

This pod runs an nginx container with two probes:

  • livenessProbe: Checks if the container is alive by requesting /healthz on port 80. If it fails 3 times, Kubernetes restarts the container.
  • readinessProbe: Checks if the container is ready to accept traffic by requesting /ready on port 80. If it fails, the container is removed from service endpoints.
  • initialDelaySeconds: Wait time before starting probes after container starts.
  • periodSeconds: How often to run the probe.
  • failureThreshold: Number of failures before action.
Commands
This command creates the pod with the configured liveness and readiness probes. Kubernetes starts the container and begins health checks.
Terminal
kubectl apply -f pod.yaml
Expected OutputExpected
pod/example-pod created
Check the pod status to see if it is running and ready after probes start working.
Terminal
kubectl get pods example-pod
Expected OutputExpected
NAME READY STATUS RESTARTS AGE example-pod 1/1 Running 0 10s
View detailed pod information including probe results and container restarts if any probe failed.
Terminal
kubectl describe pod example-pod
Expected OutputExpected
Name: example-pod Namespace: default Status: Running Containers: example-container: Container ID: docker://abcdef123456 Image: nginx:1.23 State: Running Ready: True Restart Count: 0 Liveness: http-get http://:80/healthz delay=5s timeout=1s period=5s #success=1 #failure=3 Readiness: http-get http://:80/ready delay=3s timeout=1s period=5s #success=1 #failure=3 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 1m default-scheduler Successfully assigned default/example-pod to node-1
Key Concept

If a liveness probe fails repeatedly, Kubernetes restarts the container to fix it automatically.

Common Mistakes
Not setting initialDelaySeconds causing probes to run before the container is ready.
Probes may fail immediately and cause unnecessary restarts.
Set initialDelaySeconds to allow the container time to start before probes begin.
Using the same probe for both readiness and liveness checks.
Readiness and liveness have different purposes; mixing them can cause traffic routing issues or restarts.
Configure separate readiness and liveness probes tailored to their specific checks.
Setting failureThreshold too low causing frequent restarts on temporary glitches.
Containers may restart unnecessarily, causing instability.
Choose a reasonable failureThreshold to tolerate brief failures before restarting.
Summary
Create a pod with liveness and readiness probes to monitor container health.
Use kubectl apply to deploy the pod and kubectl get pods to check status.
Describe the pod to see probe results and container restart counts.

Practice

(1/5)
1. What happens when a Kubernetes liveness probe fails for a container?
easy
A. Traffic to the container is stopped but it is not restarted.
B. The container is restarted by Kubernetes.
C. The container continues running without changes.
D. The container is removed permanently.

Solution

  1. Step 1: Understand liveness probe purpose

    Liveness probes check if a container is alive and healthy.
  2. Step 2: Effect of liveness probe failure

    If the liveness probe fails, Kubernetes restarts the container to fix the issue.
  3. Final Answer:

    The container is restarted by Kubernetes. -> Option B
  4. Quick Check:

    Liveness probe failure = container restart [OK]
Hint: Liveness probe failure always triggers container restart [OK]
Common Mistakes:
  • Confusing liveness with readiness probe effects
  • Thinking container is deleted permanently
  • Assuming no action on failure
2. Which of the following is the correct YAML snippet to define a liveness probe using HTTP GET on path /health at port 8080?
easy
A. livenessProbe: httpGet: path: health port: 8080 initialDelaySeconds: 5 periodSeconds: 10
B. livenessProbe: exec: command: ["curl", "/health"] initialDelaySeconds: 5 periodSeconds: 10
C. livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 5 periodSeconds: 10
D. livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10

Solution

  1. Step 1: Check HTTP GET probe syntax

    The correct syntax uses httpGet with path starting with a slash and port as a number.
  2. Step 2: Validate each option

    livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 correctly uses /health and port 8080. livenessProbe: exec: command: ["curl", "/health"] initialDelaySeconds: 5 periodSeconds: 10 uses exec with curl incorrectly. livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 5 periodSeconds: 10 uses tcpSocket which is different. livenessProbe: httpGet: path: health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 misses the leading slash in path.
  3. Final Answer:

    livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 -> Option D
  4. Quick Check:

    HTTP GET probe with correct path and port = livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 [OK]
Hint: HTTP path must start with '/' and port is a number [OK]
Common Mistakes:
  • Missing leading slash in path
  • Using exec command incorrectly
  • Confusing tcpSocket with httpGet
3. Given this pod spec snippet, what happens if the readiness probe fails but the liveness probe passes?
readinessProbe:
  httpGet:
    path: /ready
    port: 80
  initialDelaySeconds: 5
  periodSeconds: 10
livenessProbe:
  httpGet:
    path: /live
    port: 80
  initialDelaySeconds: 5
  periodSeconds: 10
medium
A. The container is restarted immediately.
B. The container is deleted and recreated.
C. The container is marked not ready and removed from service endpoints.
D. Nothing happens; container continues serving traffic.

Solution

  1. Step 1: Understand readiness probe role

    Readiness probe controls if the container receives traffic by marking it ready or not.
  2. Step 2: Effect of readiness probe failure

    If readiness probe fails but liveness probe passes, container stays running but is removed from service endpoints, so no traffic is sent to it.
  3. Final Answer:

    The container is marked not ready and removed from service endpoints. -> Option C
  4. Quick Check:

    Readiness fail = no traffic, container runs [OK]
Hint: Readiness failure stops traffic, liveness failure restarts container [OK]
Common Mistakes:
  • Confusing readiness failure with container restart
  • Thinking container is deleted
  • Assuming no effect on traffic
4. You notice your container keeps restarting frequently. The liveness probe is configured with initialDelaySeconds: 5 and periodSeconds: 10. What is a likely cause and fix?
medium
A. The initial delay is too short; increase initialDelaySeconds to allow startup time.
B. The period is too long; decrease periodSeconds to check faster.
C. The probe path is incorrect; change it to /healthz.
D. The container image is corrupted; rebuild the image.

Solution

  1. Step 1: Analyze probe timing settings

    If initialDelaySeconds is too short, the probe runs before the app is ready, causing false failures.
  2. Step 2: Adjust initial delay

    Increasing initialDelaySeconds gives the container time to start before probing, preventing unnecessary restarts.
  3. Final Answer:

    The initial delay is too short; increase initialDelaySeconds to allow startup time. -> Option A
  4. Quick Check:

    Short initialDelay causes early probe failure [OK]
Hint: Increase initialDelaySeconds if container restarts too soon [OK]
Common Mistakes:
  • Changing periodSeconds instead of initialDelaySeconds
  • Assuming probe path is always wrong
  • Blaming container image without checking probes
5. You have a container with both readiness and liveness probes. The readiness probe fails intermittently, but the liveness probe always passes. How should Kubernetes behave and what is the best way to improve user experience?
hard
A. Kubernetes removes the pod from service during readiness failure but does not restart it; improve by tuning readiness probe thresholds.
B. Kubernetes restarts the container on readiness failure; improve by disabling readiness probe.
C. Kubernetes ignores readiness probe failures if liveness passes; no action needed.
D. Kubernetes deletes the pod on readiness failure; improve by increasing liveness probe timeout.

Solution

  1. Step 1: Understand probe roles on intermittent readiness failure

    Readiness failure removes pod from service endpoints but does not restart container if liveness passes.
  2. Step 2: Improve user experience by tuning readiness probe

    Tuning thresholds like failureThreshold or periodSeconds reduces false negatives and prevents unnecessary traffic disruption.
  3. Final Answer:

    Kubernetes removes the pod from service during readiness failure but does not restart it; improve by tuning readiness probe thresholds. -> Option A
  4. Quick Check:

    Readiness fail = no traffic; tune probe to reduce false failures [OK]
Hint: Tune readiness probe to avoid false failures and traffic loss [OK]
Common Mistakes:
  • Thinking readiness failure restarts container
  • Disabling readiness probe instead of tuning
  • Ignoring intermittent failures
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