Skip to content

Czym są Static Pods w Kubernetes?

W momencie, gdy nie mamy uruchomionego całego klastra składającego się z Masterów (z jego wszystkimi komponentami, typu Scheduler, etcd, API Server, itd.) oraz Workerów, tylko jednego Workera, który nie widzi żadnego innego węzła można uruchomić Static Pody. Konieczne jest posiadanie jedynie kubelet na Workerze.

Są to Pody, które definiowane są w ścieżce, na Workerze w katalogu /etc/kubernetes/manifests. Musimy to skonfigurować jedynie przy uruchamianiu procesu kubelet (we fladze --pod-manifest-path) lub, tak jak robi to klaster Kubernetesa zdefiniować plik konfiguracyjny i podać jego lokalizacje we fladze config, o nazwie `kubeconfig.yaml.

Definicja ścieżki Static Pods dla kubelet, w pliku kubeconfig.yaml:

staticPodPath: /etc/kubernetes/manifests

kubelet skanuje co jakiś czas ten katalog i szuka manifestów Podów. Gdy nowy się pojawi - jest usuwany, gdy zostanie manifest zedytowany, Pod jest tworzony ponownie (usuwany i wdrażany od nowa z nowymi parametrami) lub jest usuwany, gdy manifestu zabraknie.

Warning

W taki sposób możliwe jest tworzenie jedynie Podów, nie można wdrażać innych zasobów, typu Deployment.

Czy kube-apiserver widzi Static Pody?

Tak, widzi je, w trybie Read-Only. Nie ma na nie żadnego wpływu, nie może ich usuwać, ani zmieniać. Można jedynie wpływać na statycznie utworzone pliki na Worker Nodzie.

Jakie może być wykorzystanie Static Podów?

Tak jak to robi kubeadm, można uruchomić cały Control Plane Master Noda w taki sposób. Uruchamiamy na początku Kubelet i wybrany Container Runtime Interface (CRI). Wdrażamy resztę potrzebnych komponentów (np. Controller Manager, API Server, etcd, itd...) jako Static Pody. Nie trzeba ich instalować, budować paczek.