Kubernetes, powszechnie nazywany K8s, to cieszące się ogromną popularnością oprogramowanie open source, które automatyzuje proces zarządzania kontenerami.
Zgodnie z wynikami dorocznego badania Cloud Native Computing Foundation (CNCF), aż 96% firm wykorzystuje Kubernetes lub aktywnie rozważa jego wdrożenie. Szacuje się, że z Kubernetes korzysta około 5,8 miliona programistów na całym świecie, co stanowi około 31% wszystkich specjalistów backendowych.
Jego popularność wynika z faktu, że umożliwia on lepsze skalowanie, zwiększa dostępność i skraca czas potrzebny na wdrożenie. Chociaż wielu programistów zaczyna swoją przygodę z kontenerami, używając Dockera (narzędzia opartego na interfejsie wiersza poleceń, które służy do interakcji z pojedynczymi kontenerami), Kubernetes oferuje abstrakcje wyższego poziomu. Pozwala to definiować aplikacje i ich infrastrukturę za pomocą schematów, nad którymi można wspólnie pracować.
Ten artykuł jest skierowany do osób, które dopiero rozpoczynają swoją przygodę z Kubernetes. Jego celem jest przeprowadzenie Cię przez podstawy i podzielenie się wiedzą, która pomoże Ci w efektywnym rozpoczęciu pracy. Dowiesz się, jak Kubernetes może pomóc programistom w rozwoju cyfrowych produktów.
Czym jest Kubernetes i dlaczego jest potrzebny?
Kubernetes to otwarty mechanizm orkiestracji, czyli framework, który służy do automatyzacji procesu wdrażania, skalowania i zarządzania aplikacjami w kontenerach. Jego zadaniem jest zapewnienie przewidywalności i wysokiej dostępności aplikacji.
Wyobraźmy sobie aplikację umieszczoną w kontenerze. Aby sprostać potrzebom użytkowników, konieczne jest uruchomienie kilku takich kontenerów. Pojawia się jednak problem, gdy musimy nimi zarządzać. Kontenery nie muszą znajdować się na tej samej maszynie, co dodatkowo komplikuje sytuację. W jaki sposób można ten problem rozwiązać?
Kubernetes oferuje skuteczne rozwiązanie, które pozwala bezproblemowo zarządzać tymi wszystkimi procesami. Chociaż można go porównać do silnika kontenerowego, takiego jak Docker, Kubernetes jest koordynatorem kontenerów. Jako początkujący programista nie musisz się martwić o to, jak dokładnie działa orkiestracja w Kubernetes. Prawdopodobnie nie będziesz samodzielnie konfigurować klastra Kubernetes dla swojej aplikacji; o tym opowiemy w dalszej części.
Jednak będziesz wchodzić w interakcję z klastrami utworzonymi przez Twój zespół ds. infrastruktury. Zrozumienie obiektów, z którymi będziesz pracować, jest niezwykle istotne. Zanim jednak do tego przejdziesz, warto poznać architekturę Kubernetes, by zrozumieć, jak to wszystko działa.
Funkcje Kubernetesa
Kubernetes oferuje szereg funkcji, które zapewniają szerokie możliwości w zakresie uruchamiania kontenerów i powiązanej infrastruktury. Oto kilka z nich:
Architektura Kubernetes
Architektura Kubernetes składa się z węzła głównego (master node) i węzłów roboczych (worker nodes). Węzeł główny zarządza klastrem, podczas gdy węzły robocze uruchamiają aplikacje zgodnie z wytycznymi węzła głównego.
źródło: kubernetes.io
Oto szczegółowy opis poszczególnych elementów:
Węzeł główny
Węzeł główny zarządza stanem klastra i decyduje o działaniach poszczególnych węzłów roboczych. Do skonfigurowania węzła głównego wymagane jest kilka procesów:
Jest to centrum komunikacji klastra. Służy jako brama, przez którą wszystkie komponenty klastra wymieniają informacje. Udostępnia API Kubernetes. Pełni dwie główne role. Po pierwsze, jest punktem wejścia, który umożliwia użytkownikom interakcję z klastrem, np. poprzez wysyłanie żądań za pomocą narzędzia Kubectl. Po drugie, uwierzytelnia i weryfikuje żądania, dzięki czemu tylko autoryzowani użytkownicy mogą wprowadzać zmiany w klastrze.
Planista przydziela aplikacje, czyli obiekty obciążenia Kubernetes, do konkretnych węzłów roboczych. Na podstawie wymagań dotyczących zasobów, program planujący umieszcza pody (najmniejszą jednostkę wdrożenia w Kubernetes) w odpowiednich węzłach.
Menedżer kontrolera monitoruje stan klastra, reagując na awarie węzłów i dążąc do utrzymania pożądanej liczby podów. Wykrywa zmiany, np. sytuacje, gdy pod ulegnie awarii, i dąży do przywrócenia stanu początkowego. Jeśli pod przypadkowo przestanie działać, menedżer kontrolera prosi planistę o uruchomienie nowego poda w zastępstwie, a kubelet uruchamia nowy pod w wybranym węźle.
To rozproszony magazyn typu klucz-wartość, w którym przechowywana jest konfiguracja klastra. Wszystkie zmiany w klastrze są tutaj zapisywane. Pozwala to na tworzenie kopii zapasowych klastra poprzez zapisywanie jego stanu. Należy jednak pamiętać, że nie są tutaj przechowywane dane aplikacji, a jedynie informacje o stanie klastra.
Węzły robocze
W każdym węźle roboczym instalowane są trzy procesy, które umożliwiają Kubernetes interakcję z nim i uruchamianie na nim podów. Są to:
Jest to podstawowa usługa Kubernetes, która uruchamia kontener w warstwie wykonawczej. Gdyby jej nie było, Kubernetes byłby tylko interfejsem API REST obsługiwanym przez magazyn klucz-wartość. Kubelet zajmuje się uruchamianiem kontenerów, które są odizolowane od siebie i od systemu operacyjnego hosta. Pozwala to na oddzielne zarządzanie poszczególnymi aplikacjami od siebie i od infrastruktury. Kubelet wchodzi w interakcję z węzłem i kontenerem. Pobiera pliki konfiguracyjne i uruchamia pody za pomocą środowiska wykonawczego kontenera.
Ta sekcja zajmuje się zarządzaniem kontenerami. Możesz użyć Dockera, rkt lub containerd, aby zrozumieć, jak działają kontenery.
Kube-proxy zapewnia warstwę abstrakcji dla grup węzłów, wdrażając mechanizmy równoważenia obciążenia. Wszystkie węzły korzystają z Kube-proxy, aby zapewnić wirtualny adres IP dla klientów, którzy chcą uzyskać dostęp do dynamicznie tworzonych podów. Umożliwia to równoważenie obciążenia przy minimalnym obciążeniu wydajności.
Jak działa konteneryzacja
Konteneryzacja polega na wirtualizacji wszystkich niezbędnych elementów aplikacji w jedną całość. Pod kontenerem znajduje się zbiór bibliotek, plików binarnych i konfiguracji potrzebnych do działania aplikacji. Nie obejmują one jednak jądra systemu operacyjnego ani zwirtualizowanego sprzętu.
Środowisko wykonawcze kontenera działa „na wierzchu”, określając zasoby kontenera. Ponieważ kontenery zawierają tylko podstawowe komponenty i zależności aplikacji, są znacznie lżejsze i szybsze w porównaniu do tradycyjnych maszyn wirtualnych.
Przeczytaj również: Kontenery a maszyny wirtualne: różnice i podobieństwa
Jak zainstalować i skonfigurować Kubernetes
W tej części przejdziemy od teorii do praktyki i omówimy instalację Kubernetes w systemie Windows. Jest wiele sposobów na instalację w Windows; możesz skorzystać z wiersza poleceń lub interfejsu graficznego. Ważne, aby Twój sprzęt spełniał następujące wymagania:
Wymagane jest posiadanie węzła głównego z co najmniej 2 GB pamięci RAM i 700 MB dla węzła roboczego. Dodatkowe wymagania to włączenie Hyper-V, zainstalowanie Docker Desktop, unikalny adres MAC i unikalny identyfikator UUID produktu dla każdego węzła. Oto krok po kroku, jak zainstalować Kubernetes.
Instalacja i konfiguracja Hyper-V
Hyper-V to wbudowane w Windows oprogramowanie do wirtualizacji. Pozwala na zarządzanie maszynami wirtualnymi za pomocą interfejsu graficznego lub wiersza poleceń. Aby włączyć Hyper-V, wykonaj następujące kroki:
Po ponownym uruchomieniu komputera możesz zweryfikować poprawność instalacji, wprowadzając następujące polecenie w Power Shell:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
Sprawdź, czy w polu „Stan” widnieje informacja „Włączony”.
Instalacja Dockera
Jak już wiesz, Kubernetes to narzędzie do orkiestracji kontenerów, które bazuje na kontenerach. Docker jest tutaj dobrym wyborem. Kubernetes komunikuje się z Dockerem i zarządza nim na poziomie przedsiębiorstwa. Pobierz Docker dla Windows. Docker Desktop jest preferowany, ponieważ upraszcza tworzenie, wdrażanie i uruchamianie aplikacji w kontenerach Docker.
Jest to również najszybszy sposób na tworzenie aplikacji platformy Docker w systemie Windows, dzięki wykorzystaniu funkcji Hyper-V i sieci. Po udanej instalacji Docker będzie dostępny w każdym terminalu, o ile jest uruchomiony. Szczegółowy przewodnik instalacji znajdziesz w oficjalnej dokumentacji Dockera. Jeśli po instalacji napotkasz problemy, takie jak brak ikony na pasku zadań, spróbuj ponownie uruchomić komputer.
Instalacja Kubernetesa
Interfejs graficzny Docker umożliwia konfigurację ustawień, instalację i włączenie Kubernetes. Aby zainstalować Kubernetes, wykonaj następujące kroki:
Docker zainstaluje dodatkowe pakiety i zależności. Proces ten może potrwać od 5 do 10 minut, w zależności od prędkości Twojego łącza internetowego. Po zakończeniu, możesz sprawdzić czy wszystko działa prawidłowo, używając aplikacji Docker.
Ponieważ aplikacje Kubernetes można wdrażać za pomocą wiersza poleceń, możesz chcieć zainstalować panel kontrolny K8s, który nie jest instalowany domyślnie. Aby to zrobić, wykonaj następujące kroki:
kubectl apply -f .\recommended.yaml
.kubectl.exe get -f .\recommended.yaml.txt
.Aby uzyskać dostęp do panelu kontrolnego, uruchom następujące polecenie w Power Shell:
((kubectl -n kube-system describe secret default | Select-String "token:") -split "+")[1]
- Skopiuj wygenerowany token i uruchom serwer proxy kubectl.
Jeśli wszystko poszło zgodnie z planem, na ekranie pojawi się panel kontrolny K8s. Teraz możesz zarządzać swoimi aplikacjami, korzystając z interfejsu graficznego, bez konieczności używania wiersza poleceń.
Przeczytaj również: Jak zainstalować Kubernetes na Ubuntu 18
Jak tworzyć i zarządzać klastrem Kubernetes
Jeśli udało Ci się dotrzeć do tego momentu, powinieneś mieć już zainstalowanego Kubernetes na swoim komputerze. Teraz wykonaj następujące kroki, aby stworzyć i zacząć zarządzać klastrem:
To tylko krótki opis procesu tworzenia klastra, który w praktyce wymaga wykonania wielu kroków i wprowadzenia wielu poleceń. Tutaj znajdziesz oficjalny przewodnik, który szczegółowo opisuje proces tworzenia klastra przed wdrożeniem.
Jak wdrożyć swoją pierwszą aplikację przy użyciu Kubernetes
Podczas pracy z Kubernetes najczęściej używanym poleceniem jest kubectl
, które umożliwia wykonywanie różnych akcji, takich jak tworzenie lub usuwanie określonych zasobów.
Jeśli utkniesz, możesz użyć opcji --help
po konkretnym poleceniu, aby uzyskać więcej informacji. Na przykład, kubectl get nodes --help
. Aby wdrożyć swoją pierwszą aplikację w Kubernetes, użyj polecenia kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
.
Podsumowanie
Ten artykuł był wstępem do technologii Kubernetes. Poznałeś korzyści, funkcje i architekturę Kubernetes. Dzięki temu przewodnikowi powinieneś mieć solidne podstawy, aby rozpocząć pracę z Kubernetes. Wyjaśniliśmy, jak działa ta technologia „pod maską”.
Zrozumienie całej technologii Kubernetes na początku może wydawać się trudne, ale ten artykuł miał na celu pomóc Ci w łagodnym wejściu w świat Kubernetes. Aby zyskać pewność w korzystaniu z tej technologii, będziesz potrzebował trochę praktyki, dlatego zachęcamy Cię do zapoznania się z oficjalną dokumentacją Kubernetes. Im więcej praktyki, tym szybciej staniesz się ekspertem od Kubernetes.
Zachęcamy do zapoznania się z samouczkami Kubernetes dla początkujących, aby w pełni opanować tę technologię.