<p>New to kubernetes and looking to understand the best practice around using different kubernetes objects and have difficulty understanding what is a major difference between "Pods" and "Static Pods" functionally if there is any ? </p>

<p>Major questions as below :</p>

<p>Question 1: What is a major difference between "Pods" and "Static Pods" functionally if there is any ? </p>

<p>Question 2: When to choose "static pods" over regular pods.</p>

<p>Static pods are pods created and managed by kubelet daemon on a specific node without API server observing them. If the static pod crashes, kubelet restarts them. Control plane is not involved in lifecycle of static pod. Kubelet also tries to create a mirror pod on the kubernetes api server for each static pod so that the static pods are visible i.e., when you do <code>kubectl get pod</code> for example, the mirror object of static pod is also listed. </p>

<p>You almost never have to deal with static pods. Static pods are usually used by software bootstrapping kubernetes itself. For example, <code>kubeadm</code> uses static pods to bringup kubernetes control plane components like api-server, controller-manager as static pods. <code>kubelet</code> can watch a directory on the host file system (configured using <code>--pod-manifest-path</code> argument to kubelet) or sync pod manifests from a web url periodically (configured using <code>--manifest-url</code> argument to kubelet). When <code>kubeadm</code> is bringing up kubernetes control plane, it generates pod manifests for api-server, controller-manager in a directory which kubelet is monitoring. Then kubelet brings up these control plane components as static pods. </p>
