Dobra, wiemy już mniej więcej z jakich klocków definiujemy nasze konfigi i myślę, że to idealny moment, aby przejść do architektury Kubernetesa, a dokładnie jej składowych. Mamy za sobą kilka akapitów o tym, po co i dlaczego, teraz czas na to, jak to działa.
Zacznijmy od tego, że Kubernetes jest systemem klastrowym i w środowiskach produkcyjnych działa w konfiguracji składającej się z więcej niż jednego węzła. Można oczywiście do celów testowych uruchomić sobie jedno klastrowy węzeł. Generalnie jednak spotkacie dwa rodzaje węzłów K8S – Master i Node (nazywany również Worker).
Węzły typu Master to tzw. control plane – podejmują one główne decyzje dotyczące klastra (np. decydują, gdzie mają wylądować kontenery) oraz wykrywają i odpowiadają na różne zdarzenia (np. uruchomienie kolejnego poda, aby utrzymać zgodność ze zadeklarowaną przez nas konfiguracją). Zazwyczaj węzły typu Master działają tylko po to, aby zarządzać i niej jest wskazane (ale możliwe) uruchamianie na nich kontenerów z aplikacjami produkcyjnymi. Przy projektowaniu rozwiązania produkcyjnego, w pełnym HA należy rozważyć min. 3 węzły typu Master umieszczone na różnych fizycznych lub wirtualnych maszynach. Podstawowe elementy, jakie wchodzą w skład węzła typu Master to:
Na węzeł typu Node / Worker, który odwala czarną robotę i na którym uruchamiane są aplikacje w podach składają się następujące elementy:
Powyższe elementy składają się na platformę zwaną Kubernetes. Teraz przejdźmy do tego, jak z nią rozmawiać. Można oczywiście z palca, ale to nie jest koszerne, użyjmy do tego następującego prostego kodu zapisanego w pliku .yaml:
apiVersion: v1
kind: Pod
metadata:
name: cmentarnapolka
spec: # specification of the pod’s contents
restartPolicy: Never
containers:
– name: rybipuzon
image: “ubuntu”
command: [“/bin/echo”, “Wojek”, “Vernon”]
Pole metadata name z wartością “cemntarnapolka” będzie nazwą Poda, a w jego środku będzie działać jeden kontener o nazwie rybibuzon, oparty o obraz ubuntu, w którym wykonana zostanie komenda echo wyświetlająca słowa Wójek Vernon. Logiczne nie? Uruchamia się to za pomocą następującego one-linera, lub dorzuca się do pipeline CI/CD:
kubectl create -f ./cemntarna-polka.yaml
Można to oczywiście rozbudowywać. Ubierać w ReplicaSet pozwalające na skalowanie ilości Podów, czyli np. gdy wieczorem zwiększa nam się ilość klientów, podbijamy przy pomocy tego mechanizmu ilość instancji danej aplikacji do 9, 20 lub 1000 – zależenie od potrzeb. A tym z kolei można zarządzać przy pomocy Deploymentów.
Mamy wiele możliwości, aby uruchomić nowoczesny portal do transoceanicznych korepetycji z dopiero co pełnoletnimi Paniami i Panami. Jak do tego podejść krok po korku, już w kolejnej odsłonie naszego cyklu, gdzie zainstalujemy klaster Kubernetesa, a później uruchomimy na nim aplikację, korzystając ze wspomnianych mechanizmów.