Template · Kubernetes

Kubernetes Workload Readiness Template

A fill-in readiness record for a workload going onto Kubernetes, probes that mean the right thing, requests and limits from measurement, disruption budgets, secrets, network policy, and what happens during a node failure.

Markdown. No sign-up, no email.

Kubernetes will keep a badly-configured workload running in a way that looks healthy. Most of the fields below exist to make the difference between "the pod is up" and "the service is working" visible before customers find it.

Workload: _______________ Namespace: _______________ Owner (person): _______________ Date: _______ Cluster / environment: _______________

1. Shape#

Workload typeDeployment / StatefulSet / Job / CronJob / DaemonSet
Replicas (min / max)
Statelessyes / no, if no, what state and where
Can two instances run at once safelyyes / no
Startup time to ready

2. Probes: the three, and what each means#

ProbeEndpointWhat it checksTiming
Startup
Liveness
Readiness
  • Liveness answers should this container be restarted. It must check only the process itself.
  • Readiness answers should this pod receive traffic. It may check dependencies.
  • Startup protects a slow-starting application from being killed before it is up.

Pointing liveness at a check that includes a dependency creates a cluster-wide restart storm the moment that dependency is briefly slow. The database hiccups; every pod fails liveness; every pod restarts; the database is now handling a thundering reconnect. Keep them separate.

Slow-start applications: startup probe configured? yes / no (Without one, a long boot looks like a liveness failure and the pod never gets to start.)

3. Resources#

RequestLimitBasis
CPUmeasured / guessed
Memorymeasured / guessed
  • Requests set from observed usage: yes / no, date measured: _______
  • Memory limit == request (guaranteed class)? yes / no
  • Runtime told about the container memory limit: yes / no

A CPU limit throttles; a memory limit kills. Setting memory requests too low gets pods scheduled onto nodes that cannot really hold them; setting them far too high wastes a cluster. Both are corrected by measurement, not by convention.

4. Disruption and scheduling#

PodDisruptionBudget (minAvailable / maxUnavailable)
Anti-affinity so replicas are not on one nodeyes / no
Topology spread across zones
Tolerations / node selectors, and why
Priority class

What happens when a node is drained? _______________ What happens when a node dies without warning? _______________

If both answers are "the replicas move", check that the disruption budget and anti-affinity actually allow it: a single-replica workload with a strict budget blocks node maintenance entirely.

5. Shutdown#

SIGTERM handled gracefullyyes / no
terminationGracePeriodSeconds
preStop hook (e.g. brief sleep to drain endpoints)
In-flight requests completedyes / no

There is a genuine race at shutdown: a pod can stop receiving traffic slightly after it starts terminating, because endpoint removal propagates asynchronously. A short preStop delay is the standard mitigation and is worth having wherever dropped requests matter.

6. Configuration and secrets#

Config sourceConfigMap / env / mounted file
Secrets source
Secrets encrypted at rest in etcdyes / no
Rotation picked up without a redeployyes / no
No secrets in the manifest or in gitconfirmed

7. Security context#

runAsNonRootyes / no
Read-only root filesystemyes / no
Capabilities dropped
allowPrivilegeEscalation
Service account: dedicated, minimal RBACyes / no
Automount of the service account token neededyes / no

8. Network#

NetworkPolicy applied (default deny?)
Ingress path, TLS termination
Egress required to
Service type

By default, everything in a cluster can talk to everything. A namespace with no network policy is a flat network, and the first lateral movement in an incident goes wherever it likes.

9. Observability and operations#

  • [ ] Logs to stdout, collected centrally
  • [ ] Metrics scraped, dashboard exists
  • [ ] Alerts route to a human who can act
  • [ ] HPA configured on a metric that reflects real load
  • [ ] Runbook for the three most likely failures
  • [ ] Someone would notice if the workload were scaled to zero

10. Before production#

  • [ ] Rolling update tested, no dropped requests observed
  • [ ] Pod killed deliberately; recovery verified
  • [ ] Node drained deliberately; behaviour verified
  • [ ] Resource limits verified under load, not at rest
  • [ ] Rollback of a bad image tested

Sign-off#

NameDate
Built by
Platform review
Approved for production

Back to Kubernetes

Get new material when it is published

Everything here is free and stays free. There is no form in front of any document. If you want to know when new guides and templates go up, leave an email.

Roughly monthly. Unsubscribe in one click. We do not share your address, and we will not call you.