CoursesKubernetes administrationScheduling & Placement

Manual scheduling

nodeName, and what to do when no scheduler runs.

Intermediate8 min · lesson 22 of 65
In plain terms
Manual scheduling is walking past the host and sitting yourself at a specific table. Handy when the host is out sick — but you’ve skipped every check they would have done for you.

You can bypass the scheduler entirely by setting nodeName in the pod spec — the kubelet on that node simply runs the pod. It is rare in production, but essential to understand: it is what static pods do, and it is your fallback when the scheduler itself is down.

pod.yaml
apiVersion: v1
kind: Pod
metadata: { name: web }
spec:
nodeName: node-2 # skip the scheduler; the kubelet just runs it
containers: [{ name: app, image: nginx }]

With no scheduler running, every new pod stays Pending forever because nothing assigns it a node — and setting nodeName by hand is the workaround. This is a favorite exam scenario: “the scheduler is broken, get this pod running anyway.”

nodeName skips every check
Manual scheduling ignores taints, affinity, and even resource fit — the kubelet will try to run the pod regardless. Use it deliberately, not as a habit.