Skip to main content
reliability · kubernetes

Deployments running a single replica

resource types
1
rule IDs covered
3
severity
medium

What does ZopNight detect here?

A Deployment with 1 replica has no redundancy: any node drain, eviction or rollout takes the service down completely. ZopNight flags these as a reliability finding with no dollar figure, because the fix costs money rather than saving it, which is why it is rated medium.

Signal and threshold

How ZopNight evaluates Deployments running a single replica.
Field Value
Rule IDsRC-1706 · RC-1806 · RC-1906
Categoryreliability
Severitymedium
Metricnone — pure configuration read
Sourceinternal/rules/k8s/single_replica.go

This finding costs money to fix

Almost every rule in the catalogue points at something to remove. This one asks you to add a replica, which increases spend. It is here because the cheapest infrastructure is not always the right infrastructure, and a single-replica service is one node event away from an outage.

Rated medium rather than high precisely because plenty of single-replica workloads are intentional.

What takes a single replica down

A node drain. Routine: cluster upgrades, autoscaler consolidation, spot reclamation. The pod is evicted and rescheduled, and the service is unavailable until it starts elsewhere.

A rolling update. With one replica and the default strategy, the new pod may not be ready before the old one goes, depending on maxUnavailable.

Any node failure. Obvious, and the least common of the three in practice, since planned drains happen far more often than hardware dies.

Where one replica is correct

A batch worker consuming from a queue. A singleton controller or leader-elected component. A development environment nobody pages for. A workload whose state does not tolerate concurrency.

For those, this finding is noise and should be dismissed rather than actioned. That is why it does not carry a saving or a severity that demands attention.

PodDisruptionBudgets are the other half

Two replicas without a PodDisruptionBudget still permit both to be evicted simultaneously during a drain. The budget is what tells the eviction API to keep one running.

Replicas provide the capacity; the disruption budget provides the guarantee. Teams routinely add the first and skip the second, then discover during a cluster upgrade that redundancy alone did not protect them.

Deployments at one replica, cross-checked with PDBs

Terminal window
kubectl get deploy -A -o json | jq -r '
.items[] | select(.spec.replicas == 1)
| "\(.metadata.namespace)/\(.metadata.name)"'

Cross-check against kubectl get pdb -A for which of those have a disruption budget.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·