GUIDE / KUBERNETES · BUSINESS WORKLOADS

    Customer-Facing Applications on Kubernetes: Keep the Service Available, Not Just the Pods

    Customers don't care whether the Deployment reports the requested replica count. They care whether they can log in, search, pay and get a response.

    Updated July 2026·15 min read·Business Workload series
    01

    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.

    02

    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.

    SOURCE / Kubernetes project

    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.

    03

    Probes done right

    ProbeShould verify
    StartupProtects slow-starting apps from ordinary liveness/readiness checks until initialization completes
    ReadinessThe app can safely serve requests — required configuration loaded, database reachable, not draining
    LivenessAn unrecoverable local condition — never a shared external dependency
    ×If one optional analytics API fails and every application Pod becomes unready as a result, the health check has created a complete outage. If liveness depends on a shared database, a remote outage can restart every Pod repeatedly without fixing anything.
    04

    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.

    05

    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.

    StrategyTrade-off
    Rolling updateStandard default, but not automatically zero-downtime without the conditions above
    Blue-greenClear rollback and production-like validation, at the cost of duplicate infrastructure and data-migration complexity
    CanaryNeeds comparable metrics and clear rollback criteria — monitoring only CPU and restarts can miss customer-facing defects

    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.

    06

    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

    1Coordinate timeout budgets across client, CDN, gateway, application, database and external API
    2Bound retries with backoff, jitter and an overall deadline
    3Never retry non-idempotent payment or order operations without a business idempotency key
    4Rate-limit by customer, API key, or endpoint cost class
    5Use circuit breakers, bulkheads and fallbacks so one failing dependency doesn't consume every request worker
    07

    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.

    ×Autoscaling application Pods does not automatically scale database connections, Redis connections, or external API quotas. If every Pod opens a large database pool, scale-out may exhaust the database before it helps customers.

    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.

    08

    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.

    SOURCE / Degraded modes

    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.

    09

    Observability across four layers

    InfrastructureNode/Pod health, CPU, memory, network, storage
    ApplicationRequest rate, error rate, latency, saturation, dependency errors, release version
    Customer experienceLogin/checkout/search/upload success, synthetic journeys, browser and mobile errors
    Business outcomesOrders, payments, bookings, conversion rate

    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.

    10

    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.

    11

    Common mistakes

    ×Assuming healthy Pods mean a healthy customer service

    The gateway, database or identity provider may still be failing. Monitor customer journeys.

    ×Using one replica for a critical service

    Any Pod or node interruption becomes an outage. Use justified redundancy.

    ×Running replicas on one node

    Replica count does not provide node-failure resilience by itself. Spread them.

    ×Using liveness to test the database

    A database outage may restart every application Pod. Use dependency-aware readiness instead.

    ×Claiming zero-downtime releases without testing termination

    In-flight customer requests may be dropped. Test draining and graceful shutdown.

    ×Autoscaling on CPU when the database is saturated

    More replicas may create more database connections and worsen the outage. Scale from the correct bottleneck.

    ×Keeping sessions in Pod memory

    Users may be logged out whenever Pods move or scale. Use a deliberate session model.

    ×Retrying payments without idempotency

    A timeout may produce duplicate charges. Use business identifiers and reconciliation.

    ×Restoring the cluster but not the customer journey

    Running Pods do not prove login, checkout or upload works. Perform business validation.

    12

    Customer-facing application readiness checklist

    0 / 25
    13

    Frequently 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.