Kubelet can manage a node independently(+docker/CRI) without a Kubernetes cluster or Kube API server
/etc/kubernetes/manifests/ can be used to pass pod definition files. The kubelets periodically check this location for files and creates pods. It also ensures the pods stay alive. If any changes are made in the definition files, the kubelet makes those reflected in the pods.
The location for the manifests file can be configured in kubelet.service file –pod-manifest-path=/etc/Kubaernetes/manifests
The second way is to add the location of new config file in the kubelet.service
–config=kubeconfig.yaml
kubeconfig.yaml
staticPodPath: /etc/kubernetes/manifests/
If kube-apiserver is available it will identify static pods. However, the kube-apiserver can't be used to manipulate this pod. Only config files in a manifest folder can do it.
Static pods are used for deploying Control Plane components. Created by kubelet
Daemon sets are used to deploy monitoring and logging agents on nodes. These are created by kube-apiserver
Both are ignored by kube-scheduler
In order to find the location of kubelet config file:
ps -aux | grep kubelet
//ps -aux | grep /usr/bin/kubelet
// From the output we can see that the kubelet config file used is /var/lib/kubelet/config.yaml
grep -i staticpod /var/lib/kubelet/config.yaml