⌂ Home

Static Pods

Interactive guide to kubelet-managed Pods, mirror Pods, and the node-local manifest model used by control plane components.

Static Pods are created directly by the kubelet from files on a node, not from normal API-driven controller workflows. That makes them useful for critical node-local components.

Core Model

Understand the Concept First

Node-local manifests

Static Pods are declared as files in the kubelet static pod path.

Kubelet-managed lifecycle

The kubelet is the primary manager that creates and restarts the Pod.

Mirror Pod visibility

A read-only mirror object appears in the API server so operators can inspect status.

Lifecycle Flow

Static Pod Lifecycle

1

Manifest placed on node

A YAML file is added to the static pod manifest directory.

2

Kubelet detects file

The kubelet notices the manifest and creates the Pod locally.

3

Mirror Pod appears

The API server shows a mirror Pod for visibility and inspection.

4

Kubelet maintains the Pod

If the Pod fails, kubelet restarts it as long as the manifest exists.

The API server shows status, but the kubelet remains the authoritative lifecycle manager for the Static Pod itself.
Visual Diagrams

Static Pod Architecture

Static Pod vs API-Managed Pod Comparison

Static Pod /etc/kubernetes/manifests/ etcd.yaml (manifest file) Static pod manifest on disk Watches Kubelet Node: control-plane-1 Primary lifecycle manager Kubelet directly manages static pod Creates Static Pod etcd-control-plane-1 Running on node Static pod running on node Mirror (read-only) API-Managed Pod API Server kubectl apply deployment.yaml Primary source of truth API server manages regular pods Schedules Scheduler + Controllers Deployment controller Manages desired state Scheduler and controllers manage placement Creates Regular Pod nginx-deployment-xyz Scheduled by API Regular pod managed through API Mirror Pod View (from static pods)

Control Plane Components as Static Pods

Control Plane Node /etc/kubernetes/manifests/ etcd.yaml kube-apiserver.yaml kube-controller.yaml kube-scheduler.yaml Kubelet Monitors manifest directory etcd Static Pod Port: 2379 Key-value store etcd data store as static pod API Server Static Pod Port: 6443 Control plane API Kubernetes API server as static pod Controller Static Pod Manager Reconciliation loops Controller manager as static pod Scheduler Static Pod Port: 10259 Pod placement Scheduler as static pod
Static pods are essential for control plane components because they don't depend on the API server being available—the kubelet manages them directly from local files. This allows the control plane to bootstrap itself.
YAML and Commands

Examples You Can Recognize Quickly

Typical Static Pod Path
/etc/kubernetes/manifests/
Useful Commands
kubectl get pods -n kube-system
ls -la /etc/kubernetes/manifests/
cat /var/lib/kubelet/config.yaml | grep staticPodPath
Decision Guide

Static Pods vs Regular Pods

Feature Static Pods Regular Pods
Managed by Kubelet on one node API server plus controllers
Created from Manifest file on node API requests and controller objects
Scheduling Node-specific Scheduler-controlled
Visibility Mirror Pod in API Normal API object
Static Pods are best understood as node-local kubelet behavior with API visibility added on top.
Use It Well

Practice and Real-World Thinking

Control plane understanding

Learn why kubeadm-based control plane components often run as Static Pods.

Node-local recovery thinking

Understand how critical components can boot from node configuration directly.

Operational inspection

Use mirror Pods and manifest paths to debug kubelet-managed components.