Healthy Pods are infrastructure evidence, not service evidence
A customer-facing service may have healthy Pods while users still experience failed logins, slow API responses, broken sessions, database timeouts, certificate failures, or partial releases. Kubernetes can manage replicas, networking, placement, health signals and scaling — it does not automatically guarantee correct application behavior, database availability, external dependency resilience, or disaster recovery.
A production design connects Kubernetes controls to measurable user outcomes, not just cluster health.
Traffic architecture and the Gateway API transition
A common architecture: client → DNS → CDN/DDoS protection → external load balancer → Gateway or Ingress → Kubernetes Service → application Pods → database/cache/object storage/external APIs. Every layer can become the actual availability limit — three healthy application replicas don't help when the only load balancer, database or identity provider is unavailable.
The Ingress API is frozen, and the Kubernetes project recommends Gateway API for newer capabilities. The community Ingress-NGINX project was retired in March 2026 — organizations using it should assess supported alternatives and migration to Gateway API or another maintained controller. Inventory controller-specific annotations and defaults before migrating, since they may not map directly.
Probes done right
Replica count and failure domains
A single replica creates an application-level single point of failure. Multiple replicas only improve availability when they run on independent nodes, sessions are portable, and sufficient capacity remains during failure. Topology spread constraints can distribute Pods across nodes and zones — but a strict spread rule can leave Pods Pending when the required failure domains or capacity aren't available.
A PodDisruptionBudget limits concurrent voluntary disruption and can help during node maintenance — it does not prevent involuntary failures and does not itself create capacity. A cluster running at full requested capacity cannot replace a failed replica or create rollout surge Pods.
Safe releases
A rolling update is not automatically zero downtime — it also requires multiple healthy replicas, correct readiness, graceful shutdown, backward-compatible APIs, compatible database schema, and sufficient surge capacity.
Database schema changes are one of the largest release risks — use a backward-compatible expand-and-contract pattern: add compatible schema, deploy dual-compatible code, migrate data, then remove obsolete schema in a later release.
Session state and API resilience
Session models range from stateless signed tokens to database- or Redis-backed sessions to load-balancer affinity. Sticky sessions can support a transition but don't make local session state durable — they fail when the Pod disappears, the client IP changes, or traffic moves regions.
API design
Autoscaling
The HorizontalPodAutoscaler can adjust replica count using resource, custom or external metrics. CPU may be appropriate when it correlates with load — it's weak when the application is limited by database, queue, external API, or connection pool. Consider requests per second, queue depth, or concurrent requests instead.
Node autoscaling can create Pending Pods when no node has sufficient capacity — do not depend on emergency node creation for traffic spikes shorter than node startup time. Pre-scale before predictable demand such as launches or marketing campaigns.
Dependencies and graceful degradation
The application availability cannot exceed its database availability when every request depends on it — a Kubernetes application with ten replicas and one unprotected database remains a single-point service. Inventory every external dependency (identity, payment, email, search, CRM) with timeout, retry, rate limit and fallback behaviour.
A service may remain partially useful when one dependency fails — allow browsing but disable checkout, serve a cached catalogue, or queue email for later. Define these degraded modes before an incident; don't improvise customer behaviour during the outage.
Observability across four layers
Healthy infrastructure does not prove a healthy business service — track p95/p99 tail latency rather than only the average, since a small group of extremely slow requests may represent your most valuable or complex operations.
Backup and disaster recovery
Protect Kubernetes resources, application configuration, persistent files, database, object storage, Secrets and keys, container images, and Gateway/DNS configuration. A recovery cluster may require a Gateway implementation, TLS certificates, database recovery, object-storage access, Secret rotation and a DNS switch — recovery is complete only when critical customer journeys succeed in the recovery environment, not merely when Pods report Running. See the disaster recovery plan guide for the broader planning framework.
Common mistakes
The gateway, database or identity provider may still be failing. Monitor customer journeys.
Any Pod or node interruption becomes an outage. Use justified redundancy.
Replica count does not provide node-failure resilience by itself. Spread them.
A database outage may restart every application Pod. Use dependency-aware readiness instead.
In-flight customer requests may be dropped. Test draining and graceful shutdown.
More replicas may create more database connections and worsen the outage. Scale from the correct bottleneck.
Users may be logged out whenever Pods move or scale. Use a deliberate session model.
A timeout may produce duplicate charges. Use business identifiers and reconciliation.
Running Pods do not prove login, checkout or upload works. Perform business validation.
Customer-facing application readiness checklist
0 / 25Frequently asked questions
Yes, particularly when application replicas are replaceable, state is externalized, deployments are automated and the service has clear resilience and recovery requirements.
Most stateless web applications and APIs should use Deployments. StatefulSet is appropriate only when stable replica identity or replica-specific storage is required.
The Kubernetes project recommends Gateway API for newer development because the Ingress API is frozen. Existing Ingress installations remain supported by their selected controller and should be migrated deliberately.
The Kubernetes project announced the retirement of the community Ingress-NGINX project in March 2026. Organizations using it should assess supported alternatives and migration to Gateway API or another controller.
It determines whether a Pod should receive Service traffic. When readiness fails, the Pod is removed from matching Service endpoints.
No. It also requires sufficient replicas and capacity, correct readiness, graceful termination, compatible application versions and safe database changes.
It limits concurrent voluntary disruptions to selected Pods. It does not prevent involuntary failures or create replacement capacity.
Important sessions should generally use a shared or stateless model. Pod-local sessions are lost when the Pod disappears.
No. They can route a client repeatedly to one Pod, but they do not preserve state after that Pod fails.
Autoscaling can help when replicas are interchangeable, the selected metric reflects demand, dependencies can support growth and the cluster can supply capacity.
Monitor infrastructure, application behavior, customer journeys, business outcomes, dependency health, release versions and disaster-recovery readiness.
It must survive expected Pod, node and dependency failures, release safely, scale within its limits, restore its data, and complete critical customer journeys within approved objectives.
Build around the customer journey
Kubernetes can replace failed Pods, distribute traffic, support declarative releases, spread replicas and scale workloads — those controls are only useful when the application is designed around them. Externalize required state, use supported traffic infrastructure, configure meaningful probes, protect databases and dependencies, and scale from meaningful demand signals.
Monitor customer journeys rather than only cluster health, test deployments and failures under realistic traffic, then restore the service into a replacement cluster and confirm customers can actually log in, read, write, upload or purchase. The production objective is not a stable Deployment — it is a reliable customer experience.