Kubernetes ma sens dopiero wtedy, gdy stan klastra jest opisany w repozytorium, a nie w pamięci administratora. W tym obszarze piszę o projektowaniu małych klastrów wysokiej dostępności, o sieci i przechowywaniu danych w kontenerach oraz o GitOps jako sposobie pracy, a nie tylko narzędziu.
Adres API przeskakuje między węzłami, a za nim restartują się wtyczka sieciowa, kontrolery i DNS. Jak odróżnić problem samego kube-vip od wolnego etcd, sieci i zasobów węzła oraz co zmienić, żeby adres przestał skakać.
System CI, platforma GitOps, monitoring i baza wiedzy potrafią logować użytkowników kontem domenowym. Bezpośrednie LDAPS i OIDC przez pośrednika, takiego jak Dex lub Keycloak, dają ten sam efekt dla użytkownika i zupełnie inny dla bezpieczeństwa.
Bez żadnej polityki sieciowej każdy pod w klastrze może połączyć się z każdym. Jak wprowadzić domyślną odmowę per przestrzeń nazw, dopuścić DNS, ruch z kontrolera ingress i do bazy, i nie wyłączyć przy tym aplikacji.
Trzy węzły control plane nic nie dają, jeśli klienci łączą się z API pod adresem jednego z nich. Trzy sposoby utrzymania wspólnego adresu, ich konfiguracje, certyfikat z właściwymi nazwami i sprawdzenie, kto naprawdę z adresu korzysta.
Deployment wskazujący app:latest działa do pierwszego restartu poda na innym węźle. Jak tagować obrazy wersją i skrótem commita, przypinać je po digest, chronić tagi w rejestrze i sprzątać rejestr bez ryzyka.
Demon Dockera w pipeline oznacza kontener uprzywilejowany albo gniazdo hosta w zadaniu CI. Jak zbudować obraz z tego samego Dockerfile w zwykłym podzie i co wybrać, skoro repozytorium kaniko zostało zarchiwizowane.
Skrypt wykonuje kroki i kończy pracę, GitOps utrzymuje stan. Na przykładzie Application w Argo CD: automatyczna synchronizacja, samonaprawa, kolejność zasobów i wykrywanie ręcznych zmian na klastrze.
Trzy węzły i etcd chronią stan klastra, ale nie aplikacje. Co dzieje się z podami, woluminami i adresem API po awarii węzła oraz jak zaprojektować repliki, rozkład i budżety zakłóceń w k3s.
Klaster prowadzony przez GitOps można postawić od zera w godzinę, ale repozytorium nie odtworzy danych na wolumenach, sekretów ani stanu API. Migawki etcd w k3s, Velero i test odtworzenia do osobnego klastra.
Kontenery nie zastąpiły maszyn wirtualnych, a klaster sam działa na VM. Tabela decyzji dla typowych obciążeń i ustawienia Hyper-V, bez których węzły Kubernetes tracą pamięć, spójność etcd albo kworum.