In this lesson, you will learn how to configure readiness probes to ensure your traffic balancer only routes requests to pods that are fully initialized and ready during a deployment update.
The Problem: The "Cold Start" Gap
When you perform a rolling update, Kubernetes starts new pods to replace the old ones. However, a container starting up doesn't always mean your application is ready to handle traffic. Your app might still be loading large configuration files, establishing database connections, or pre-caching data. If the service sends traffic to a pod that is technically "running" but still initializing, your users will experience errors or timeouts.
Defining Readiness
A readinessProbe tells Kubernetes exactly when the application is truly ready to accept requests. Unlike a livenessProbe (which checks if the app is still healthy), the readinessProbe acts as a traffic gatekeeper. If the probe fails, Kubernetes removes the pod from the Service’s load-balancing pool. Once the probe succeeds, the pod is added back.
Consider this configuration in your Deployment manifest:
spec:
containers:
- name: my-app
image: my-app:v2
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
Why it Matters for Updates
During a rolling update, Kubernetes uses this probe to manage the transition. It will wait for the readinessProbe of the new version to pass before it considers the pod "available."
If you don't define a readiness probe, Kubernetes assumes the pod is ready as soon as the container process starts. By defining one, you ensure that the load balancer only sends traffic to pods that have completed their internal startup routines. This is essential for achieving the "Zero Downtime" updates we discussed in previous lessons, as it prevents the deployment from switching traffic to a pod that is not yet capable of processing it.
Key Takeaway: Readiness probes prevent traffic from hitting uninitialized pods, acting as a crucial safety valve during rolling updates to ensure uninterrupted application availability.