Spot Capacity Orchestrator · View 19 of 32 · 5 · Runtime
Who owns the drain
- The agent owns the trigger and the deadline; the scheduler owns the mechanics. Driving eviction through the scheduler reuses semantics workloads already understand and avoids two systems evicting the same pod.
- When the scheduler API does not answer within 800 ms, the agent stops asking. On Kubernetes it takes a systemd shutdown inhibitor and lets kubelet's graceful node shutdown terminate pods by priority, locally. On Slurm it signals the job's cgroup directly. The scheduler learns afterwards, and that is acceptable because the node is going anyway.
Work the platform implements once
- Spark: executor decommissioning with shuffle and cached-block migration to the Ceph fallback store. Kubernetes Jobs: a pod failure policy that does not count a disruption against the retry limit. Slurm: jobs submitted requeueable with a USR1 signal ahead of termination.
Risk
- A PodDisruptionBudget can block eviction indefinitely. The agent honours it until the drain budget is spent and then deletes with the remaining grace, because the budget cannot outlive the node.