HTTP probe configuration in Kubernetes - Time & Space Complexity
When Kubernetes checks if an app is healthy using HTTP probes, it sends requests repeatedly.
We want to understand how the number of these checks grows as the app or cluster size changes.
Analyze the time complexity of the following HTTP readiness probe configuration.
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 3
This config tells Kubernetes to send an HTTP GET request to /healthz on port 8080 every 10 seconds after waiting 5 seconds initially, and to consider the pod unhealthy after 3 failures.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Kubernetes sends HTTP GET requests repeatedly to check pod health.
- How many times: Every 10 seconds indefinitely until pod stops or fails.
Explain the growth pattern intuitively.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 pods | 10 probes every 10 seconds |
| 100 pods | 100 probes every 10 seconds |
| 1000 pods | 1000 probes every 10 seconds |
Pattern observation: The number of HTTP probe requests grows linearly with the number of pods.
Time Complexity: O(n)
This means the total number of health check requests grows directly in proportion to the number of pods.
[X] Wrong: "The probe runs only once per pod, so it doesn't add up much."
[OK] Correct: The probe runs repeatedly at fixed intervals, so the total checks increase as pods increase and time passes.
Understanding how repeated health checks scale helps you design efficient monitoring in real systems.
"What if the periodSeconds is halved? How would the time complexity change?"
Practice
Solution
Step 1: Understand the role of HTTP probes
HTTP probes send HTTP requests to the app to check if it is alive and ready.Step 2: Identify the correct purpose
Only To check if the application is running and responding to HTTP requests describes checking app health via HTTP requests.Final Answer:
To check if the application is running and responding to HTTP requests -> Option CQuick Check:
HTTP probe purpose = health check [OK]
- Confusing probes with deployment or logging
- Thinking probes manage network traffic
- Assuming probes store logs
Solution
Step 1: Review HTTP probe syntax
The correct HTTP probe useshttpGetwithpathandportkeys.Step 2: Identify the correct YAML structure
livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 correctly useshttpGetwithpathandport. livenessProbe: httpGet: url: http://localhost:8080/healthz initialDelaySeconds: 5 periodSeconds: 10 is invalid becauseurlis not a valid key.Final Answer:
Correct HTTP liveness probe syntax with httpGet, path, and port -> Option BQuick Check:
httpGet uses path and port keys [OK]
- Using 'url' instead of 'path' in httpGet
- Confusing exec or tcpSocket probes with httpGet
- Wrong indentation or missing keys
livenessProbe:
httpGet:
path: /status
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
What will Kubernetes do after the pod starts?Solution
Step 1: Understand initialDelaySeconds
This value tells Kubernetes to wait 10 seconds after pod start before first probe.Step 2: Understand periodSeconds
This value sets the interval between probes, here every 5 seconds.Final Answer:
Wait 10 seconds, then send an HTTP GET to /status every 5 seconds -> Option DQuick Check:
initialDelaySeconds = wait, periodSeconds = repeat interval [OK]
- Confusing initialDelaySeconds with periodSeconds
- Assuming immediate probe on pod start
- Mixing up timing values
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 2
But Kubernetes marks the pod as not ready even though the app is healthy. What is the likely problem?Solution
Step 1: Check probe path correctness
If the app does not respond correctly to /ready, probe fails and pod is not ready.Step 2: Evaluate timing parameters
initialDelaySeconds of 5 is reasonable; timeoutSeconds of 2 is short but typical; periodSeconds of 10 is normal.Final Answer:
The probe path /ready is incorrect or not handled by the app -> Option AQuick Check:
Probe path must match app endpoint [OK]
- Ignoring probe path correctness
- Changing timing values unnecessarily
- Assuming timeoutSeconds causes readiness failure
Solution
Step 1: Match initialDelaySeconds to 15 seconds
The probe must wait 15 seconds before first check, so initialDelaySeconds: 15.Step 2: Set periodSeconds to 3 seconds and timeoutSeconds to 1 second
Checks happen every 3 seconds, and timeout is 1 second as required.Final Answer:
Correct probe with initialDelaySeconds 15, periodSeconds 3, timeoutSeconds 1 -> Option AQuick Check:
initialDelay=15, period=3, timeout=1 matches requirements [OK]
- Swapping initialDelaySeconds and periodSeconds
- Setting timeoutSeconds longer than periodSeconds
- Using wrong path or port
Ready to prove it?
Pass the test and this pattern moves unknown
