Kubernetes - Static Pods

Les Static Pods sont gérés directement par le démon kubelet sur chaque node spécifique sans que l’API Server ne le monitor.
Contrairement aux pods qui sont gérés par le control plane (via Deployment par exemple), à la place c’est kubelet qui les gère et qui les redémarres quand il y en a un qui crash.
L’API server voit aussi ces pods mais ne les controle/gère pas, au travers d’un mirror pod sur l’API server. Ces pods sont suffixés avec le hostname du node avec un tiret (ex kube-scheduler-controlplane).

Ceci ne prend en compte que les pods, pas les déloyments, replicaSet … Use case: sur le control plane, kube-apiserver, etcd, controller-manager…

Configuration

Ces Static Pods sont dans le dossier suivant:

  • /etc/kubernetes/manifests/

La modification d’un des manifests de pod entrainnera la suppression puis recréation du pod.
Le path de ce dossier se trouve dans la configuration du démon kubelet (staticPodPath).

Une alternative mais dépréciée est de configurer kubelet sur un node avec un manifest local en utilisant l’argument suivant à la CLI: –pod-manifest-path=/etc/kubernetes/manifest/.
Il faudra redémarrer kubelet s’il y a modification de la configuration.

Static Pods Vs DaemonSets

Static pods

Créé par kubelet
Déploie des composants du control plane
Ignoré par le kube-scheduler

DaemonSets

Créé par kune-apiserver (DaemonSet controller)
Déploie des agents sur les nodes comme pour le monitoring, logging.