Kubernetes Wstęp

Kubernetes

Kubernetes

Znany również jako K8s, to otwarte oprogramowanie służące do automatyzacji procesów wdrażania, skalowania i zarządzania skonteneryzowanymi aplikacjami.
Kubernetes grupuje kontenery, które są częścią jednej aplikacji, w logiczne grupy, ułatwiając ich odnajdywanie i zarządzanie nimi.
Podstawowe pojęcia znajdziesz tu: DOKUMENTACJA

Po co grupować kontenery?

Na początku warto odpowiedzieć sobie na pytanie po co w ogóle grupować kontenery?
Załóżmy sytuację, w której Twoja aplikacja złożona jest z kilku mikrousług, takich jak:

  • Interfejs użytkownika;
  • Backend;
  • Baza danych;
  • Pamięć podręczna;

oraz posiadasz kilka maszyn wirtualnych, na których chcesz te mikrousługi rozmieścić.
Najbardziej efektywnym podejściem byłoby zautomatyzowanie tego procesu, między innymi ze względu
na konieczność czasowego rozmieszczania różnych ich wersji.
Potrzebne jest nam rozwiązanie, które pozwoli na zlokalizowanie maszyn, połączenie ich ze sobą oraz
rozdystrybuowanie wspomnianych wcześniej usług.

W tym miejscu nasuwa się pytanie dlaczego w takim razie nie rozmieścić wszystkich mikrousług na jednej maszynie? Istnieje kilka kwestii, które warto rozważyć, aby zrozumieć problem:

  • Ryzyko awarii: Umieszczenie wszystkich mikrousług na jednej maszynie powoduje, że w przypadku
    awarii, wszystkie usługi staną się niedostępne;
  • Różne wymagania: Poszczególne usługi mogą wymagać różnych wersji oprogramowania lub języków
    programowania, co może prowadzić do konfliktów;
  • Bezpieczeństwo: Jeśli narażasz jedną z usług na ryzyko, możesz narażać na naruszenie bezpieczeństwa pozostałe usługi.
  • Brak zasobów: Jeśli wszystkie mikrousługi działają na jednej maszynie, może dojść do wyczerpania
    zasobów;

Przykładowe problemy, które rozwiązuje Kubernetes

  • Organizacja mikrousług;
  • Klonowanie usług
  • Separacja usług;
  • Zarządzanie tworzeniem kopii usług (self healing);
  • Zarządzanie komunikacją pomiędzy usługami (CNI);
  • Zarządzanie dostępami do usług;

Kubernetes stworzy dla nas klaster – zestaw maszyn roboczych, nazywanych węzłami (node), na których uruchamiane są aplikacje w kontenerach. Każdy klaster musi posiadać przynajmniej jeden węzeł.
Na węzłach (lub węźle) roboczych rozmieszczane są pody, które są częściami składowymi aplikacji.
Warstwa sterowania (control plane) zarządza węzłami roboczymi i podami należącymi do klastra.
W środowisku produkcyjnym warstwa sterowania rozłożona jest zazwyczaj na kilka maszyn, a klaster uruchomiony jest na wielu węzłach zapewniając większą niezawodność i odporność na awarie.

Kubectl

Kubernetes command-line tool, czyli kubectl to narzędzie, które pozwoli nam na komunikację pomiędzy nami a naszym klastrem. Kubectl używany jest do wdrażania aplikacji, inspekcji i kontroli zasobów klastra, przeglądania logów i wielu innych czynności, które będziemy wykonywać w tym cyklu. W dużym uproszczeniu, kubectl to napisany w języku Go klient, który ma za zadanie komunikować się z serwerem API Kubernetesa – więcej o tym, w jaki sposób odbywa się powyższa komunikacja opowiemy sobie w kolejnych sekcjach.

Zestaw narzędzi

MicroK8s

Na potrzeby cyklu o Kubernetesie wykorzystamy lekkie narzędzie, które pozwoli nam na instalację i korzystanie z Kubernetesa lokalnie – MicroK8s.
MicroK8s to certyfikowane przez CNCF (Cloud Native Computing Foundation) rozwiązanie firmy Canonical pozwalające na stworzenie klastra bezpośrednio na naszej stacji roboczej, używając jednego
bądź kilku węzłów(node).
Warto w tym miejscu zaznaczyć, że MicroK8s nie jest Kubernetesem w porównaniu 1:1, jednak jest możliwie najbliższym do niego narzędziem, które można wykorzystać w celach szkoleniowych. Istnieją również alternatywy do rozwiązania od Canonical, takie jak minikube, k3s, czy kind, jednak w naszym przypadku będziemy chcieli skorzystać z możliwie najprostszego rozwiązania.

Jeśli zainteresował cię ten temat, kontynuację możesz przeczytać na naszym blogu: https://nodea.pl/blog/