Where should it run?
Requires cluster-wide capacity, constraints, competing workloads, and policy. Its output is placed desired state.
Investigation 015 · Node Execution Principles
The scheduler selected Machine 42 and recorded that decision in authoritative desired state. No process exists. No CPU is used. The machine remains idle.
Begin the investigation ↓Prologue
The scheduler examined the available machines, evaluated CPU and memory, applied placement policy, and selected Machine 42.
Authoritative desired state now says: Run Workload A on Machine 42.
No process exists.
No memory has been allocated. No CPU cycles are consumed.
Machine 42 remains idle. The placement is still perfectly correct.
The system knows where the workload belongs. Nothing in the architecture owns the transition from that knowledge to running reality.
Once a global decision has been made, who is responsible for turning it into local reality?
First Principles
Scheduling and execution transform different state, require different evidence, and end at different boundaries.
Requires cluster-wide capacity, constraints, competing workloads, and policy. Its output is placed desired state.
Requires running processes, filesystem state, devices, operating-system events, and direct access to local resources.
A durable assignment can name a destination. It cannot allocate memory or create a process.
Machine 42 can act locally, but capability alone does not tell it which global intentions belong to it.
Desired State → Placed Desired State is not the same transformation as Placed Desired State → Running Reality.
Naive Architecture
The scheduler already chose Machine 42. The shortest design gives it one more step: connect to the machine and start the workload directly.
Under those assumptions the design is sensible. One component decides. The same component acts. No new service or machine agent is required.
The Architecture That Almost Worked
The scheduler returns to one responsibility: placement. A new central service owns execution across every machine.
The scheduler decides. The execution service executes. Each appears to have one job.
The service assumes network conversations can replace direct local evidence at every machine.
Breaking Our Design
Each episode breaks one assumption, earns one conclusion, and leaves the next question unresolved.
Pressure. Workload A is authoritatively assigned to Machine 42, but the architecture contains no component responsible for making it exist.
Prediction. If placement is itself execution, recording the assignment should create a running process.
Record the placement.
Desired state changes. Machine state does not.
The intended process remains absent indefinitely.
Execution is a separate responsibility.
Who should own it?
Prediction: will changing desired state create a process?
Pressure. One service now reaches across the network for every start, stop, inspection, and recovery action.
Prediction. If remote execution is ordinary coordination, one service should remain manageable as the fleet grows.
Increase machines and lifecycle traffic.
Remote work concentrates in one queue.
Latency and uncertain outcomes accumulate centrally.
Execution cannot remain one remote responsibility.
Why does the machine remain passive?
This illustrative model assumes four remote lifecycle events per machine per minute and a fixed central capacity of 4,000 events per minute. These values expose concentration; they are not Kubernetes limits.
At ten machines, this illustrative model appears comfortable.
Pressure. Machine 42 owns the processors, memory, and local operating-system evidence, yet it does not know that Workload A was assigned to it.
Prediction. If local capability is enough, the machine should infer its work without observing authoritative assignments.
Compare global and machine-local views.
Both views are truthful and disconnected.
The capable machine remains idle.
The machine must discover assignments addressed to itself.
Does discovery once suffice?
Two views can both be truthful without being connected.
Pressure. Workload A starts successfully at 09:00 and crashes at 09:07. Desired state still requires it.
Prediction. If execution is a one-time action, successful startup should complete the responsibility.
Start once, then terminate the work.
Desired and actual state diverge.
No owner notices or repairs the mismatch.
Execution is continuous local reconciliation.
Global decision, local continuous action.
Desired state says run. Local reality is stopped. No action has happened.
Compact Review
The Turning Point
The boundary follows knowledge and physical responsibility. The global system places work. Each machine continuously makes only its own assignments real.
The Node Execution Contract
A machine-local execution agent transforms desired state assigned to its machine into running reality.
Continuously discover workloads addressed to this machine.
Compare assigned state with directly observed local reality.
Make assigned work exist without deciding where it belongs.
Stop local work no longer present in assigned desired state.
Repair drift whenever running reality no longer matches intent.
Use evidence available at the machine while acknowledging observation delay.
Publish observations without making global decisions or claiming present certainty.
Do not rank machines, redefine intent, own authoritative truth, or perform garbage collection.
| Owner | Input | Transformation | Output |
|---|---|---|---|
| Scheduler | Desired state | Evaluate machines and placement policy | Placed desired state |
| Node execution agent | Assignments for one machine | Observe, compare, correct, report | Running reality and local observations |
Only Now: Kubernetes
A Kubelet runs on every node. It observes work assigned to that node, compares desired state with local execution, restores missing work, removes obsolete work, and reports local observations.
The name does not change the contract. Kubernetes is one realization of the boundary we already earned.
The scheduler owns where. The Kubelet owns making that decision real here.
Engineering Reflection
Global decisions need a global view. Local execution needs local evidence. Combining them forces one component to live in two incompatible information worlds.
The Borgmaster scheduled; a borglet on every machine started, stopped, restarted, and reported tasks.
Central resource allocation remained separate from execution near each worker.
Scheduler coordination evolved while the per-machine execution boundary remained.
The Kubelet inherits the same local responsibility pattern.
One process may reasonably decide and execute when the fleet is small, links are reliable, local state changes rarely, and one operator can understand every target.
Local ownership becomes necessary when machines fail independently, evidence changes continuously, and execution volume grows with the fleet.
Every machine runs another system component.
Thousands of local reconcilers must behave consistently.
The control plane sees reported evidence, not direct present reality.
Assignments and execution may temporarily diverge.
Local agents must be deployed, upgraded, and diagnosed.
Adding a machine adds both capacity and the agent responsible for that capacity.
Investigation Exercise
Use one scheduler and two inert workers. Predict each state change before running the trace.
Record A → Node 1 and B → Node 2. Confirm that neither workload starts.
Give each worker access only to assignments bearing its identity.
Let each worker compare its assignments with local reality.
Terminate A and observe which participant can detect and restore it.
A New Mystery
Throughout this investigation, creation remained one abstract act. We did not derive process isolation, filesystem preparation, networking, or operating-system-specific execution.
Responsibility for execution does not require owning every execution mechanism.