Skip to main content

Myth: All Pods Are Created Using the API Server and Scheduler

Early in my Kubernetes journey, I strongly believed that the API server and scheduler were mandatory for every Pod.

This belief was reinforced by diagrams, certification material, and almost every “Kubernetes architecture” blog showing a straight line:

kubectl → API Server → Scheduler → Kubelet → Pod

The illusion broke when I SSH’d into a control-plane node and deleted the kube-apiserver Pod using kubectl delete pod.

Within seconds, the Pod came back — without any scheduler event.

That was the moment I realized:

Some Pods don’t play by the standard rules.

Why This Myth Exists?

This myth exists because:

  • Most Pods do follow the API server → scheduler → kubelet flow

  • Static Pods are rarely discussed outside kubeadm internals

  • Diagrams simplify Kubernetes to make learning easier

  • Control-plane components are hidden behind abstractions in managed Kubernetes services

As a result, people assume “all Pods are the same”.

They are not.

The Reality:

Kubernetes supports a special category of Pods called Static Pods.

Static Pods bypass both the API server and the scheduler.

How they actually work:

  • The kubelet watches a directory on the node (commonly /etc/kubernetes/manifests)

  • Any Pod YAML placed there is directly started by the kubelet

  • The Pod is bound to that node permanently

  • The scheduler is never involved

These Pods are node-local, not cluster-scheduled.

Experiment & Validate

Step 1. Observe Static Pods

On a kubeadm-based cluster:

ls /etc/kubernetes/manifests

You will typically see:

  • kube-apiserver.yaml

  • kube-scheduler.yaml

  • kube-controller-manager.yaml

  • etcd.yaml

These are Static Pods.

Step 2. Check Their Presence in the API Server

kubectl get pods -n kube-system

You’ll see them listed, but note:

  • They appear as Mirror Pods

  • The API server reflects them but does not manage their lifecycle

Step 3. Try Deleting One

kubectl delete pod kube-apiserver-<node-name> -n kube-system

Result:

  • Pod disappears briefly
  • Immediately reappears

Why?

Because the kubelet recreates it from the manifest file.

Step 4: Delete the Actual Source

rm /etc/kubernetes/manifests/kube-apiserver.yaml

Now the Pod is truly gone.

This confirms:

  • Deletion through API server does nothing
  • The kubelet is the real owner

Key Takeaways

  • Not all Pods are created via the API server
  • Not all Pods are scheduled by the scheduler
  • Static Pods are created and managed directly by the kubelet
  • Control-plane components commonly run as Static Pods
  • Deleting a Static Pod requires removing its manifest file
  • Understanding Static Pods is essential to understanding Kubernetes bootstrapping
Did this myth change how you understand Kubernetes?
00
Authored and Debunked By
Rajesh Deshpande
Rajesh DeshpandeKubernetes Mythologist
Cloud-Native Platform Architect
More →
Reviewed and Verified By
Snehal Joshi
Snehal JoshiKubernetes Mythicist
Cloud-Native Architect (DevOps)
More →