
Kubernetes (K8s) to jedna z najważniejszych umiejętności technicznych, których warto się nauczyć w 2023 r., a liczba miejsc pracy wymagających doświadczenia w K8 wzrosła w zeszłym roku o ponad 10 %. W tym artykule przytoczę odpowiedzi, Nigela Poultona, eksperta Kubernetes i autora bestsellerów, na często zadawane pytania dotyczące tej platformy.
Historia w skrócie
Kubernetes rozpoczął żywot w Google, gdzie został zaprojektowany jako koordynator kontenerów. Oprogramowanie zostało udostępnione społeczności jako projekt open source latem 2014 roku. W marcu 2018 Kubernetes jako pierwszy projekt ukończył Cloud Native Computing Foundation (CNFC). Ukończenie “studiów” oznacza dobre zarządzanie projektem, dojrzałość oraz uznanie, że projekt jest gotowy do produkcji. Aktualnie Kubernetes jest dojrzałą technologią, która ma średnio trzy wydania rocznie. Wersje są wstecznie kompatybilne z ugruntowanymi zasadami dodawania i wycofywania funkcji.
Co to jest Kubernetes?
Kubernetes to platforma typu open source do wdrażania aplikacji kontenerowych i zarządzania nimi. Na wysokim poziomie Kubernetes to dwie rzeczy:
- Klaster
- Orkiestrator
Klaster Kubernetes ma co najmniej jedną maszynę, która zapewnia procesor, pamięć i inne elementy wymagane do uruchomienia aplikacji. Element aranżacji implementuje sztuczną inteligencję do zarządzania aplikacjami.
Czym jest klaster Kubernetes?
Klaster Kubernetes to jeden lub więcej węzłów współpracujących ze sobą w celu uruchamiania aplikacji kontenerowych. Węzły płaszczyzny kontrolnej implementują inteligencję, taką jak planowanie, samonaprawianie i automatyczne skalowanie. Węzły procesu roboczego zapewniają procesor, pamięć i sieć, które są wymagane do uruchamiania aplikacji.
Co to jest węzeł Kubernetes?
Kubernetes to klaster węzłów obsługujących aplikacje użytkownika. Są to węzły płaszczyzny kontrolnej, które implementują sztuczną inteligencję, albo węzły procesu roboczego obsługujące aplikacje użytkownika. Oba typy mogą być serwerami fizycznymi, maszynami wirtualnymi, instancjami w chmurze, a nawet rzeczami takimi jak Raspberry Pi.
Co to jest kapsuła w Kubernetes?
Pod to najmniejsza jednostka wdrożenia w Kubernetes. Przykładowo, jeśli mamy kontener internetowy, który chcesz wdrożyć w Kubernetesie, musisz go wdrożyć w pod. Jeśli chcesz skalować usługę sieci Web w górę lub dół, dodaj lub usuń zasobniki. Najprostsze pody obsługują pojedynczą aplikację umieszczoną w kontenerze. Istnieją jednak bardziej złożone wzorce, w których jeden pod obsługuje wiele bezpłatnych kontenerów.
Czym jest Kubernetes zarządzany?
Tworzenie własnych klastrów Kubernetes może być trudne. Na przykład, należy je dopasować pod względem wysokiej dostępności oraz wydajności aplikacji. Musimy zajmować się codziennymi zadaniami operacyjnymi, takimi jak aktualizacje, instalowanie poprawek, zarządzanie certyfikatami i wiele więcej.
Zarządzany Kubernetes to model, w którym dostawca chmury zajmuje się wcześniej wymienionymi elementami pracy oraz zapewnia bezpieczny punkt końcowy interfejsu API, abyśmy mogli po prostu korzystać z klastra. Trzeba za niego dodatkowo płacić, ale nie wymaga on praktycznie żadnego wysiłku.
Czym jest kubectl?
Kubectl to oficjalne narzędzie wiersza poleceń Kubernetes. Służy do zarządzania elementami infrastruktury Kubernetes oraz wdrażania i zarządzania aplikacjami użytkownika. Jest dostępny w systemach Windows, Linux, MacOS i innych platformach. Kubernetes zwykle zainstalowany na komputerze poza klastrem, takim jak komputer administratora.
Węzły płaszczyzny kontrolnej
Węzły płaszczyzny kontrolnej (wcześniej nazywane wzorcami) uruchamiają usługi płaszczyzny kontrolnej, które można traktować jako mózg Kubernetesa. Usługi te obejmują program planujący, serwer API i magazyn klastrów. W celu zapewnienia wysokiej dostępności należy wdrożyć trzy lub pięć węzłów płaszczyzny kontroli i rozłożyć je w domenach błędów.
Węzły robocze
Węzły procesu roboczego to miejsce, w którym działają aplikacje użytkownika. Rozmiar i liczba węzłów procesu roboczego w klastrze będzie zależeć od wymagań aplikacji. Należy je rozmieścić w domenach błędów, aby można było utrzymać wysoką dostępność aplikacji.
Sieć podów
Każdy klaster Kubernetes implementuje specjalną sieć zwaną siecią “pod”. Jest to duża płaska sieć, często nakładkowa VXLAN, obejmującą wszystkie węzły w klastrze. Każda kapsuła aplikacji jest wdrażana do sieci kapsuł, co oznacza, że każda kapsuła aplikacji może komunikować się z każdą inną kapsułą. Po wyjęciu z pudełka sieć kapsuł zazwyczaj nie ma żadnych zabezpieczeń. W środowiskach produkcyjnych należy stosować zabezpieczenia sieciowe.
Zalety
Kubernetes często jest nazywany “systemem operacyjnym chmury”. Dzieje się tak dlatego, że abstrahuje infrastrukturę w taki sam sposób, jak tradycyjny system operacyjny (Linux, Windows). Uruchamianie Kubernetes ma wiele zalet, w tym abstrakcję infrastruktury, orkiestrację na dużą skalę i wspólny interfejs API.
Tak długo jak aplikacje są zaprojektowane do działania na platformie Kubernetes, tak długo możliwa jest zmiana bazowej chmury lub platformy sprzętowej bez konieczności zmiany aplikacji. Ta abstrakcja podstawowej infrastruktury może uprościć proces migracji aplikacji z jednej chmury na drugą.
Kubernetes implementuje funkcje takie jak samonaprawa i dynamiczne automatyczne skalowanie, które umożliwiają zarządzanie kontenerami na dużą skalę. Popularność pozwoliła utworzyć środowisko, w którym wiele nowych produktów i technologii trafia do niego jako pierwszego.
Ograniczenia
Chociaż Kubernetes może koordynować obciążenia maszyn wirtualnych, serwerowe i WebAssembly, to znaczna jego część kodu jest dostosowana do pracy z kontenerami. Na przykład obciążenia WebAssembly uruchamiają się niewiarygodnie szybko i umożliwiają prawdziwe skalowalne do zera architektury sterowane zdarzeniami. Jednak te oprogramowanie zostało stworzone do zarządzania kontenerami, które mają znacznie dłuższe czasy uruchamiania i nie przystosowane do skalowania do zera lub prawdziwych “zimnych” startów. Kubernetes jest w ciągłym fazie rozwoju i nie ma powodu, żeby sądzić, że nie zostanie dostosowane do potrzeb.
Do czego służy Kubernetes?
Wykorzystanie Kubernetes rośnie w prawie wszystkich branżach dzięki jego stabilności i dopracowania, a także wielu narzędziom, które go udoskonalają. Mówiąc ogólnie, uprasza on skalowalność i produktywność aplikacji korporacyjnych. W ciągu ostatnich kilku lat, organizacje coraz częściej wybierają platformę orkiestracyjną Kubernetes.
Jednym z obszarów, w których wdrażanie było wolniejsze, jest przetwarzanie brzegowe oraz inne środowiska o ograniczonych zasobach. Wynikało to przede wszystkim z tego, że kontenery były zbyt duże i wymagały większej ilości zasobów.
Bardzo Ci dziękuję za dotrwanie do tego momentu! To dla Ciebie właśnie tworzę każdy artykuł na moim blogu.
Spodobał Ci się ten artykuł? Podziel się nim ze swoimi znajomymi! Zapraszam do śledzenia wpisów na moim blogu, pozostawienia komentarza oraz polubienia profilu na Facebooku!