Readiness probe concept in Kubernetes - Time & Space Complexity
We want to understand how the time cost of Kubernetes readiness probes changes as the number of pods grows.
Specifically, how does checking readiness scale when many pods run in a cluster?
Analyze the time complexity of the following readiness probe configuration.
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: example-image
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
This code sets a readiness probe that checks the /health endpoint every 10 seconds after a 5-second delay.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Kubernetes repeatedly sends HTTP GET requests to the pod's /health endpoint.
- How many times: This happens every 10 seconds for each pod until the pod is ready.
As the number of pods (n) increases, the total number of readiness checks grows proportionally.
| Input Size (n) | Approx. Operations per Period |
|---|---|
| 10 pods | 10 HTTP checks every 10 seconds |
| 100 pods | 100 HTTP checks every 10 seconds |
| 1000 pods | 1000 HTTP checks every 10 seconds |
Pattern observation: The number of readiness probe checks grows linearly with the number of pods.
Time Complexity: O(n)
This means the total readiness probe checks increase directly with the number of pods running.
[X] Wrong: "Readiness probes run once and then stop, so their cost does not grow with more pods."
[OK] Correct: Readiness probes run repeatedly for each pod until it becomes ready, so more pods mean more repeated checks.
Understanding how readiness probes scale helps you design efficient Kubernetes clusters and shows you can think about system behavior as it grows.
"What if the readiness probe periodSeconds is halved? How would that affect the time complexity?"
Practice
readiness probe in Kubernetes?Solution
Step 1: Understand readiness probe role
A readiness probe checks if a container is ready to accept requests, preventing traffic to unready containers.Step 2: Compare with other options
Other options describe different Kubernetes features: restarts (liveness probe), monitoring (metrics), and updates (deployments).Final Answer:
To tell Kubernetes when a container is ready to receive traffic -> Option AQuick Check:
Readiness probe = container readiness [OK]
- Confusing readiness probe with liveness probe
- Thinking readiness probe restarts containers
- Assuming readiness probe monitors resource usage
Solution
Step 1: Review readiness probe types
Valid readiness probes includehttpGet,tcpSocket, andexeccommands.Step 2: Check syntax correctness
readinessProbe: httpGet: path: /health port: 8080 is now correctly indented. readinessProbe: exec: command: ["curl", "-f", "http://localhost:8080"] usesexecwith correct command syntax as a list of strings. readinessProbe: tcpSocket: port: 8080 correctly definestcpSocketwith port. readinessProbe: restartPolicy: Always is invalid becauserestartPolicyis not part of readiness probe.Final Answer:
readinessProbe with tcpSocket and port -> Option DQuick Check:
Valid readiness probe syntax = tcpSocket [OK]
- Misplacing restartPolicy inside readinessProbe
- Incorrect command format in exec probe
- Wrong indentation causing YAML errors
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
What happens if the HTTP GET request to /ready returns status 503?Solution
Step 1: Understand readiness probe failure effect
If the readiness probe fails (like HTTP 503), Kubernetes marks the container as not ready and stops routing traffic to it.Step 2: Differentiate from liveness probe
Liveness probe failure causes restarts, but readiness probe failure only affects traffic routing, not container lifecycle.Final Answer:
Kubernetes marks the container as not ready and stops sending traffic -> Option CQuick Check:
Readiness failure = no traffic [OK]
- Confusing readiness probe failure with liveness probe failure
- Assuming container restarts on readiness failure
- Thinking pod gets deleted on readiness failure
readinessProbe:
exec:
command: ["cat", "/tmp/ready"]
initialDelaySeconds: 5
periodSeconds: 10
But Kubernetes always marks the pod as not ready. What is the most likely cause?Solution
Step 1: Understand exec readiness probe behavior
The exec probe runs the command; it expects a zero exit code for success. If the file /tmp/ready does not exist,catreturns non-zero, causing failure.Step 2: Check other options
Command syntax is valid. Timing values affect delay but not constant failure. So the missing or unreadable file is the cause.Final Answer:
The file /tmp/ready does not exist or is empty -> Option BQuick Check:
Exec probe success = command exit code 0 [OK]
- Assuming timing values cause readiness failure
- Misunderstanding exec command success criteria
- Ignoring file existence for exec probes
Solution
Step 1: Analyze readiness probe requirements
The container must be ready only after config is loaded and port is open. TCP socket or HTTP GET alone cannot check config loading.Step 2: Evaluate probe options
Use a TCP socket readiness probe on port 8080 with initialDelaySeconds set to 10 checks only port open after delay, Use an HTTP GET readiness probe on path /health with periodSeconds set to 1 checks HTTP path frequently but not config. Use an exec readiness probe that runs a script checking config file and port status runs a script that can verify both config and port, making it the best choice. Use a liveness probe instead of readiness probe to check port 8080 is wrong because liveness probes do not control traffic routing.Final Answer:
Use an exec readiness probe that runs a script checking config file and port status -> Option AQuick Check:
Complex readiness checks need exec probe [OK]
- Using liveness probe instead of readiness probe
- Relying only on TCP or HTTP probes for config readiness
- Ignoring initialDelaySeconds impact on readiness
Ready to prove it?
Pass the test and this pattern moves unknown
