Desired three beside one observed unit and two missing count positions. The arrow compares a target with a count gap, not ready capacity.

Kubernetes Deployments describe desired state

You describe the end state, not the steps. That idea underlies replicas, updates, and rollback: the cluster keeps working to match your description. The count sequences describe the article’s local arithmetic model. Real controllers have separate responsibilities and asynchronous failure modes. Historical model passes are unchanged; no example was rerun. Spec beats imperative steps A Deployment is a statement of the end state, not a list of steps: how many replicas, which image, what update strategy, which labels. The operator publishes the what, and the controller, a reconcile loop, is responsible for the how. The distinction is resource ownership, not whether a shell command was used. kubectl run normally creates a standalone Pod; its kubelet can restart containers, but no ReplicaSet maintains a replacement population after that Pod disappears. A Deployment can itself be created with a command, yet its stored specification continues guiding controllers after the client exits. Interrupting the client does not reliably indicate whether the API accepted the request: inspect the stored object before retrying or diagnosing convergence. ...

August 19, 2027 · 5 min · XB Field Notes
A Pod uses a PVC bound to a PV; recovery still depends on backing storage and topology.

A PVC gives a Pod durable storage beyond the container

A PersistentVolumeClaim separates storage lifetime from a recreated Pod; it does not guarantee data recovery. A PersistentVolume describes storage, a claim requests it, and controllers arrange binding or provisioning. Recovery still depends on backing storage, usable topology and backups. Claims and volumes have separate lifetimes. Finalizers can postpone deletion, while reclaim policy controls the released storage. Review both before maintenance: mistakes can cause persistent Terminating states, unintended data loss or retained storage bills. ...

August 13, 2027 · 4 min · XB Field Notes
For identical one-container Pods, 200m CPU requests at a 60% target give a simplified 120m target; the unadjusted calculation turns three replicas at 160m into four desired replicas.

The HPA grows and shrinks a Deployment by load

A HorizontalPodAutoscaler is a feedback controller, not a capacity planner. Its default synchronization interval is fifteen seconds. Depending on its configuration, it reads resource, custom or external metrics and updates a workload’s scale subresource. The basic calculation is desiredReplicas = ceil(currentReplicas * currentMetricValue / desiredMetricValue), followed by handling for missing data, readiness, tolerances, stabilization and bounds. ...

August 11, 2027 · 5 min · XB Field Notes
If configured, the startup probe gates two independent branches: readiness for Service routing eligibility and liveness for container recovery.

Liveness and readiness tell Kubernetes how the Pod feels

A slow start is not a dead process. Readiness and liveness make independent decisions: whether ordinary Service traffic should reach this Pod, and whether terminating this container can help it recover. Readiness failure does not suspend liveness. A startup probe provides that startup protection when configured. ...

July 14, 2027 · 4 min · XB Field Notes
A ConfigMap edit branches to an eventually updated projected file and an unchanged existing-container environment.

ConfigMap files and environment have different lifetimes

Changing a ConfigMap updates an API object. Whether a running application changes behavior depends on how Kubernetes delivers the value and how the application reads it. Environment injection, normal volume projection, a subPath mount, and an already-open file are different paths with different lifetimes. Diagnose the consumer that actually matters rather than treating all configuration delivery as one mechanism. ...

July 1, 2027 · 6 min · XB Field Notes
A startup latch gates readiness traffic eligibility and liveness restart handling as separate branches.

Probes tell the platform when to act

A probe result is evidence consumed by a control loop. Kubernetes does not infer your application’s recovery strategy from a route named healthz. The probe type, result, configured thresholds, and container lifecycle determine what happens next. Treating every failure as “restart the Pod” erases distinctions that directly affect availability. ...

June 18, 2027 · 6 min · XB Field Notes
Separate arrows connect resource requests to placement and resource limits to runtime enforcement. Limits are not scheduler reservations.

Resource limits constrain execution; requests guide placement

A Kubernetes resource request and a resource limit belong to different decisions. Requests participate in scheduling and resource sharing; limits configure execution constraints supported by the runtime and operating system. Treating a limit as the scheduler’s reservation obscures both mechanisms. A useful resource policy identifies placement needs, acceptable contention and the failure behavior when a running workload reaches its boundary. ...

June 14, 2027 · 6 min · XB Field Notes
Ten desired replicas plus two surge gives a rollout target of twelve. Ten minus one unavailable gives a planning budget of nine available replicas. A separate terminating tail may extend beyond twelve. These budgets do not guarantee uptime.

Rolling updates replace pods in small waves

A rolling update is a controlled replacement, not a promise of uninterrupted service. Its useful property is that the controller can retain old replicas while introducing new ones. Whether users notice the change also depends on spare capacity, meaningful health checks, and shutdown behavior. This article tunes that process; the companion strategy article asks whether versions should overlap at all. ...

June 7, 2027 · 5 min · XB Field Notes