Probe failure and container restart behavior in Kubernetes - Time & Space Complexity
We want to understand how the system reacts over time when a probe fails in Kubernetes.
Specifically, how often the container restarts grow as probe failures increase.
Analyze the time complexity of the following Kubernetes liveness probe configuration.
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: example-image
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 3
This config checks the container health every 10 seconds and restarts it after 3 failures.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The liveness probe runs repeatedly every 10 seconds.
- How many times: It runs continuously until the container is restarted or stopped.
As the number of probe failures increases, the container restart attempts grow linearly.
| Input Size (failures) | Approx. Restarts |
|---|---|
| 3 | 1 restart after 3 failures |
| 6 | 2 restarts after 6 failures |
| 30 | 10 restarts after 30 failures |
Pattern observation: Restarts increase directly with the number of failures.
Time Complexity: O(n)
This means the number of container restarts grows linearly as probe failures increase.
[X] Wrong: "The container restarts immediately after one probe failure."
[OK] Correct: Kubernetes waits for the failureThreshold count before restarting, so restarts depend on multiple failures, not just one.
Understanding how Kubernetes handles probe failures and restarts helps you explain system reliability and fault tolerance clearly.
What if we changed failureThreshold from 3 to 1? How would the time complexity of restarts change?
Practice
Solution
Step 1: Understand liveness probe purpose
Liveness probes check if a container is alive and healthy.Step 2: Effect of liveness probe failure
If the liveness probe fails, Kubernetes restarts the container to fix the issue.Final Answer:
The container is restarted by Kubernetes. -> Option BQuick Check:
Liveness probe failure = container restart [OK]
- Confusing liveness with readiness probe effects
- Thinking container is deleted permanently
- Assuming no action on failure
/health at port 8080?Solution
Step 1: Check HTTP GET probe syntax
The correct syntax useshttpGetwithpathstarting with a slash andportas a number.Step 2: Validate each option
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 correctly uses/healthand 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.Final Answer:
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 -> Option DQuick Check:
HTTP GET probe with correct path and port = livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 [OK]
- Missing leading slash in path
- Using exec command incorrectly
- Confusing tcpSocket with httpGet
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /live
port: 80
initialDelaySeconds: 5
periodSeconds: 10Solution
Step 1: Understand readiness probe role
Readiness probe controls if the container receives traffic by marking it ready or not.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.Final Answer:
The container is marked not ready and removed from service endpoints. -> Option CQuick Check:
Readiness fail = no traffic, container runs [OK]
- Confusing readiness failure with container restart
- Thinking container is deleted
- Assuming no effect on traffic
initialDelaySeconds: 5 and periodSeconds: 10. What is a likely cause and fix?Solution
Step 1: Analyze probe timing settings
IfinitialDelaySecondsis too short, the probe runs before the app is ready, causing false failures.Step 2: Adjust initial delay
IncreasinginitialDelaySecondsgives the container time to start before probing, preventing unnecessary restarts.Final Answer:
The initial delay is too short; increaseinitialDelaySecondsto allow startup time. -> Option AQuick Check:
Short initialDelay causes early probe failure [OK]
- Changing periodSeconds instead of initialDelaySeconds
- Assuming probe path is always wrong
- Blaming container image without checking probes
Solution
Step 1: Understand probe roles on intermittent readiness failure
Readiness failure removes pod from service endpoints but does not restart container if liveness passes.Step 2: Improve user experience by tuning readiness probe
Tuning thresholds like failureThreshold or periodSeconds reduces false negatives and prevents unnecessary traffic disruption.Final Answer:
Kubernetes removes the pod from service during readiness failure but does not restart it; improve by tuning readiness probe thresholds. -> Option AQuick Check:
Readiness fail = no traffic; tune probe to reduce false failures [OK]
- Thinking readiness failure restarts container
- Disabling readiness probe instead of tuning
- Ignoring intermittent failures
Ready to prove it?
Pass the test and this pattern moves unknown
