Advanced Disciplines
The Scheduler and the Ethics of Placement
Placement is policy made physical. When you schedule, you are allocating failure domains, cost, and contention.
Text
Authored as doctrine; evaluated as operations.
Doctrine
The scheduler is not a convenience. It is a governance system that decides what runs where, under which constraints, and at whose expense.
Kubblai doctrine calls this ‘ethics’ because placement shapes blast radius and resource equity.
Constraints: the real shape of intent
Affinity, anti-affinity, taints/tolerations, topology spread, and node selectors are how you declare placement intent. Without them, you have hopes—not guarantees.
The scheduler will satisfy constraints, but it will not infer your priorities unless you encode them.
- Use topology spread constraints for multi-AZ resilience.
- Reserve specialized nodes with taints; tolerate explicitly.
- Avoid over-constraining: too many hard rules becomes perpetual Pending.
Requests, limits, and the economics of honesty
Requests drive binpacking. Limits cap burst (imperfectly). The platform’s stability depends on request accuracy; under-requesting turns the scheduler into a liar.
At scale, inaccurate requests become an availability and cost incident.
- Measure real usage; iterate requests.
- Use VPA carefully; understand restart semantics.
- Distinguish ‘baseline’ from ‘burst’ and model it explicitly.
Fairness, priority, and preemption
PriorityClasses encode what survives when the cluster is full. Preemption is a last resort: it preserves critical services but can cascade disruption.
Serious operators treat preemption as a governed tool with clear policy, not an accidental side effect.
- Define a small number of PriorityClasses.
- Separate platform-critical workloads from tenant workloads.
- Test eviction behavior and recovery time under load.
Operational signals
If you operate production Kubernetes, you must be fluent in Pending pods and scheduler events. They are the scheduler’s honest output.
When pods are Pending, do not guess. Describe. Read events. Confirm constraints.
kubectl
shell
kubectl get pods -A --field-selector=status.phase=Pending
kubectl describe pod <pod> -n <ns>
kubectl get events -n <ns> --sort-by=.lastTimestamp | tail -n 40Canonical Link
Canonical URL: /library/the-scheduler-and-the-ethics-of-placement
Related Readings
Advanced Disciplines
LibraryTaints, Tolerations, and the Law of Affinity
Affinity is desire; taints are refusal. Together they define where work may live and where it must never settle.
Advanced Disciplines
LibraryHPA, VPA, and the Limits of Elasticity
Elasticity is not free. It is a control system built on noisy signals and hard limits.
Advanced Disciplines
LibraryCluster Autoscaling and the Economics of Expansion
Adding nodes is not ‘scale.’ It is a controlled expansion of failure domains, cost, and operational surface area.