Kubernetes to system do automatycznego zarządzania aplikacjami kontenerowymi. Umożliwia łatwe wdrażanie, skalowanie
oraz zarządzanie aplikacjami, dzięki czemu są one bardziej efektywne i niezawodne.
Kubernetes współpracuje z Dockerem (oraz innymi technologiami kontenerowymi) w celu zarządzania tymi kontenerami na dużą skalę.
W skrócie, Docker tworzy kontenery, a Kubernetes zarządza nimi w bardziej złożonych środowiskach.
Appa Notka.
Kubernetes jest też powszechnie nazywany K8s, co jest de facto skrótem nazwy Kubernetes.
Liczba 8 odnosi się do liczby liter pomiedzy pierwszą a ostatnią literą w
tym słowie.
Dlaczego potrzebujesz wiedzy o K8s
Chociaż na pierwszy rzut oka Kubernetes (K8s) może nie wydawać się bezpośrednio związany z rolą programisty Java, to
jego rosnąca popularność w branży IT czyni go technologią kluczową do zrozumienia. Duże korporacje często wybierają K8s
z myślą o długoterminowym strategicznym planowaniu i zapewnieniu skalowalności swoich projektów od samego początku.
To narzędzie umożliwia ujednolicenie procesów wdrożeniowych, co jest niezbędne w zarządzaniu złożonymi aplikacjami,
zwłaszcza w architekturze mikrousług. Dla Java Developerów,
wiedza na temat Kubernetes otwiera drzwi do bardziej
zaawansowanych projektów i przygotowuje do elastycznego dostosowywania się do przyszłych wyzwań technologicznych.
Appa Notka.
Kubernetes pomaga upewnić się, że konteneryzowane aplikacje działają tam, gdzie chcesz i kiedy chcesz, a także pomaga im znaleźć zasoby i narzędzia, których potrzebują do pracy. Kubernetes to gotowa
do produkcji platforma open source zaprojektowana w oparciu o doświadczenie Google w zakresie orkiestracji kontenerów, w połączeniu z najlepszymi pomysłami społeczności.
Podstawowe komponenty Kubernetes
Przeglądając podstawowe komponenty Kubernetesa, warto skupić się na praktycznych przykładach, które zilustrują, jak te
elementy współpracują ze sobą w rzeczywistym środowisku. Oto rozwinięcie każdego z komponentów:
Pod
Pod jest podstawową jednostką operacyjną w Kubernetes. Każdy Pod może zawierać jeden lub więcej kontenerów, które
ściśle ze sobą współpracują i dzielą zasoby.
Przykład
Wyobraź sobie aplikację webową, która składa się z dwóch kontenerów Docker, jeden z serwerem HTTP (np. Apache Tomcat) a drugi z bazą
danych (np. Postgres). Te dwa kontenery mogą być umieszczone w jednym Podzie, co ułatwia im komunikację i
współdzielenie zasobów, takich jak pamięć czy system plików.
Pod w Kubernetes można najlepiej opisać jako grupę, która pozwala na wspólne zarządzanie jej elementami
(kontenerami), ale sama w sobie nie jest wydzielonym miejscem na serwerze wirtualnym ani fizycznym.
Pod jest wiec grupą jednego lub więcej kontenerów, które są uruchamiane razem na tym samym węźle (Node).
Ta koncepcja umożliwia dynamiczne zarządzanie aplikacjami w rozproszonych środowiskach.
Node
Node (Węzeł) to fizyczny lub wirtualny serwer, na którym uruchamiane są Pody (grupujące kontenery z aplikacjami).
Węzeł zapewnia zasoby takie jak CPU, pamięć, sieć i magazynowanie, które są niezbędne do działania kontenerów.
Węzły są zarządzane przez główny komponent Kubernetes, zwany Master.
Przykład
Wyobraź sobie, że masz Pody takie jak w poprzednim przykładzie. W tym scenariuszu możesz mieć węzeł 1,
który uruchomi Poda z serwerem Apache Tomcat i ten Pod będzie obslugiwał ruch sieciowy i żądania HTTP.
Drugi węzeł może być odpowiedzialny za Poda z bazą danych Postgres przechowującej dane aplikacji.
W przypadku gdybyś miał usługi pomocnicze na osobnych kontenerach w osobnym Podzie, takie jak systemy kolejkowania czy cache,
one mogłyby działać na węźle numer 3.
W tym przykładzie, Node'y w Kubernetes działają jak indywidualne serwery, na których uruchamiane są różne części
aplikacji. Zapewniają niezbędne zasoby, umożliwiają skalowanie i zapewniają redundancję oraz ciągłość działania
usług. Takie węzły mają swoją nazwę —
Worker Nodes. Oprócz nich istnieją jeszcze węzły sterujące —
Control Plane Nodes
(Control Plane jest zbiorem komponentów zarządzających klastrami Kubernetes i może być umieszczony na jednym lub więcej serwerach, które technicznie są węzłami w klastrze, ale pełnią specjalną funkcję).
Cluster
Cluster (Klaster) jest zbiorem węzłów, które wspólnie tworzą środowisko Kubernetes. W klastrze zarządzamy
zasobami i aplikacjami jako całością, niezależnie od poszczególnych węzłów.
Klaster może składać się z wielu węzłów, rozlokowanych w różnych lokalizacjach geograficznych, co zapewnia
redundancję i wyższą dostępność aplikacji. Pody mogą być dynamicznie przenoszone między węzłami w zależności od
obciążenia i dostępności zasobów.
Przykład
Węzeł 1 (z Podem zawierającym serwer Apache Tomcat) może być zlokalizowany w jednej lokalizacji geograficznej, np. w
centrum danych w Europie.
Węzeł 2 (z Podem zawierającym bazę danych Postgres) może znajdować się w innym centrum danych, na przykład w Ameryce
Północnej.
Dodatkowe węzły, takie jak węzeł 3 z usługami pomocniczymi, mogą być rozmieszczone w innych lokalizacjach,
zapewniając jeszcze większą dywersyfikację i odporność na awarie.
Appa Notka.
Pamiętaj! Klaster jest logiczną jednostką grupującą węzły (serwery fizyczne lub wirtualne),
które zawierają Pody będące jednostkami logicznymi grupującymi kontenery.
Podsumowanie
Wszystkie te pojęcia należy dokładnie zrozumieć, zanim przystąpisz do pracy z Kubernetesem, dlatego powtórzę
to jeszcze raz wnieco skróconej formie.
-
Klaster Kubernetes
— jest logiczną jednostką, która grupuje węzły
— każdy węzeł to serwer (fizyczny lub wirtualny), który jest częścią klastra
-
Węzły (Nodes)
— serwery, które wchodzą w skład klastra
— węzły dostarczają zasoby, takie jak moc obliczeniowa, pamięć i magazyn, które są wykorzystywane do uruchamiania Podów
-
Pody
— każdy Pod jest logiczną grupą, która może zawierać jeden lub więcej kontenerów
— kontenery w Poddzie współdzielą pewne zasoby i są uruchamiane razem na tym samym węźle
-
Kontenery
— to lekkie, izolowane środowiska, które zawierają aplikacje wraz z ich zależnościami
— są uruchamiane wewnątrz Podów
Wkrótce, w nadchodzącym rozdziale, rozwinę omówioną tutaj architekturę o kilka istotnych szczegółów.
Autor: Jarek Klimas
Data: 28 stycznia 2024
Labele: Backend, Poziom zaawansowany, Java
Czy informacje, które otrzymałeś, były pomocne?
Jeśli tak, zapraszam Cię do podarowania mi kawy.
Topowe Materiały
Kubernetes: Tutorials
Kubernetes: Install Tools
Baeldung: Introduction to Kubernetes
Baeldung: Guide to Spring Cloud Kubernetes
Spring: Spring Boot Kubernetes
Dołącz do grupy, w której znajdziesz ciekawe posty oraz poznasz odpowiedzi na swoje pytania!
-
Regularnie publikowane posty dotyczące, Springa i Hibernate'a oraz samej Javy.
-
Możliwość zadawania pytań osobom tworzącym społeczność budowaną
wokół tych samych zainteresowań
-
Bezpośredni kontakt z autorem portalu i kursów Javappa!
-
Wymiana doświadczeń między członkami grupy
-
Przyjazna atmosfera w zamkniętej grupie