Skip to content

KodeCloud CKA Static Pods

Links: 111 KodeCloud Index


Static pods

  • Kubelet can manage a node independently.
  • We need to provide pod definition files to kubelet to create pods.
    • Assuming there is no kubeapi-server to provide kubelet with the pod definition files we need to place the files in /etc/kubernetes/manifests folder.
    • Kubelet constantly checks this folder for any manifests file.
  • Kubelet will create the pod and ensure that it is alive.
    • If for some reason the pod crashes kubelet will restart the pod.
  • If the manifest file is removed from this directory then the pod is deleted automatically.
    • attachments/Pasted image 20230519090145.jpg
  • Any modifications made to the file ensures that the pod is modified.
The pods created by the kubelet without the intervention of the api server are known as static pods.
  • We can only create pods this way.
  • We CANNOT create replicasets or deployments this way. attachments/Pasted image 20221010231849.jpg
  • Kubelet works at a pod level and can only understand pods.
  • The location to place the pod manifest files can be any directory on the host.

    • To configure the directory it has to be passed to the kubelet while running the service.
    • The option is named --pod-manifest-path
      • attachments/Pasted image 20221010231841.jpg
    • In case the we are using the kubeadm setup the configuration options can be found at cat /var/lib/kubelet/config.yaml
      • attachments/Pasted image 20230519090515.jpg
  • Kubelet can create both static pods and the pods from the kubeapi-server at the same time.

  • The api server is aware of the static pods created by kubelet.
    • We only see a read only mirror of the static pod when we do k get pods.
    • We can see the details of the pod but we CANNOT edit or delete it like normal pods.
    • Name of the pod is automatically appended with node name.
    • attachments/Pasted image 20230519090030.jpg

### Why use static pods? - Since static pods are not dependent on the control plane, static pods can be used to deploy the control plane components as pods on a node. - Install kubelet on all the master nodes. - Use docker images of the various control plane components (api-server, scheduler, controller manager and etcd) and place them in the /etc/kubernetes/manifests directory. - attachments/Pasted image 20221010233035.jpg
- Kubelet takes care of deploying the control plane component as pods. - This way we don't have to download the binaries, configure services or worry about the services crashing. - If any of these pods were to crash it would be automatically restarted by the kubelet - This is how the kubeadm tool sets up the k8s cluster. - This is why we see control plane components as pods in the kube-system namespace. - Since the name of the node gets appended to the name of the pod we get names like this: - attachments/Pasted image 20221010233913.jpg
- attachments/Pasted image 20221010233937.jpg


  • Difference between static pods and daemon sets
    • attachments/Pasted image 20221010233628.jpg

Last updated: 2023-05-19