Pierwsze kroki z Kubernetes: wprowadzenie dla początkujących

Kubernetes to najpopularniejsze oprogramowanie typu open source, które automatyzuje procesy tworzenia kontenerów.

Według corocznego badania Cloud Native Computing Foundation (CNCF) 96% organizacji używa K8 lub rozważa ich użycie. Jeśli uważnie śledzisz, 5,8 miliona programistów na całym świecie korzysta z Kubernetes, co stanowi 31% programistów zaplecza na całym świecie.

Jest preferowany ze względu na możliwość wykorzystania technologii poprzez lepszą skalowalność, dostępność i krótki czas wdrożenia. Podczas gdy wielu programistów rozpoczyna swoją trajektorię kontenerów za pomocą Dockera (kompleksowe narzędzie, które opiera się na interfejsie CLI do interakcji z kontenerami, jeden po drugim), K8s zapewnia abstrakcje wysokiego poziomu do definiowania aplikacji i ich infrastruktury za pomocą schematów, które możesz współpracować.

Jeśli dopiero zaczynasz korzystać z Kubernetes, ten artykuł jest specjalnie dostosowany, aby pomóc Ci przejść przez wprowadzenie i podzielić się spostrzeżeniami, które pomogą Ci zacząć. Dowiesz się, w jaki sposób K8 może pomóc programiście w doładowaniu produktów cyfrowych.

Co to jest Kubernetes i dlaczego go potrzebujesz?

Kubernetes to mechanizm koordynacyjny typu open source (framework) używany do automatyzacji wdrażania, skalowania i zarządzania aplikacjami kontenerowymi; obejmuje to obsługę przewidywalności i dostępności.

Mówiąc najprościej, pomyślmy o aplikacji, którą umieściłeś w kontenerze. Aby obsłużyć użytkowników aplikacji, musisz uruchomić kilka kontenerów. Niepokój pojawia się, gdy trzeba zarządzać tymi kontenerami. Kontenery niekoniecznie muszą znajdować się na tej samej maszynie, co komplikuje sprawę. Jakie jest więc rozwiązanie tego problemu?

Kubernetes przychodzi Ci z pomocą, zapewniając skuteczny sposób bezproblemowej obsługi wszystkich tych procesów. Chociaż K8s można porównać do silnika kontenerowego, takiego jak Docker, jest to koordynator kontenerów. Jako początkujący programista nie musisz się martwić o to, jak K8s wykonuje orkiestrację. Prawdopodobnie nie skonfigurujesz klastra K8s dla swojej aplikacji; więcej na ten temat wkrótce.

Będziesz jednak wchodzić w interakcje z klastrami utworzonymi przez Twój zespół ds. infrastruktury. Zapoznanie się z obiektami, z którymi będziesz wchodzić w interakcje, jest kluczowe. Ale zanim to zrobisz, będziesz potrzebować wysokiego poziomu zrozumienia jego architektury, aby zrozumieć, co dzieje się pod nim.

Cechy Kubernetesa

Kubernetes ma kilka funkcji z szerokim zakresem możliwości uruchamiania kontenerów i innej powiązanej infrastruktury. Oto lista:

  • Zautomatyzowane wdrażanie, skalowanie i wycofywanie — K8 zrobotyzuje tworzenie określonej liczby replik, rozdzielanie ich na odpowiedni (najbardziej odpowiedni) sprzęt i ponowne planowanie kontenerów, jeśli węzeł jest przestojem. Możesz błyskawicznie skalować swoje repliki w zależności od zapotrzebowania lub zmieniających się potrzeb, takich jak użycie procesora.
  • Wykrywanie usług, stabilizacja obciążenia i wejście do sieci — Kubernetes oferuje unikalne rozwiązanie sieciowe, w tym wewnętrzne wykrywanie usług i udostępnianie publicznych kontenerów.
  • Aplikacje ze stanem i bez — na początku K8 koncentrowało się głównie na kontenerach bezstanowych. Ponieważ technologia ewoluuje na wielu frontach, teraz obsługuje wbudowane obiekty reprezentujące aplikacje stanowe. Ratyfikowany, każda aplikacja może działać na Kubernetes.
  • Przepisy dotyczące przechowywania — niezależnie od tego, czy korzystasz z lokalnego systemu plików, udziału sieciowego czy chmury, Kubernetes zapewnia (abstrakt) trwałe przechowywanie aplikacjom działającym w kontenerach. Abstrakcja pozwala na zdefiniowanie wymagań dotyczących pamięci masowej niezależnie od infrastruktury bazowej. Chociaż wykracza to poza zakres tego artykułu, działa na podstawie zasad, takich jak trwały wolumin (PV), trwałe żądanie woluminu (PVC), klasy magazynu i wtyczki woluminów.
  • Stan deklaratywny — K8s używa plików języka Yet Ain’t Markup Language (YAML), zwanych manifestami obiektów, do określania pożądanych stanów klastra. Manifesty określają wygląd klastra, w tym między innymi żądane wystąpienia aplikacji i reguły sieciowe oraz inne konfiguracje. Kiedy stosujesz manifesty, K8s automatycznie obsługuje wszystkie przejścia między stanami – nie musisz pisać skryptów, aby to zrobić.
  • Wiele środowisk pracy — nie jesteś ograniczony do korzystania z Kubernetes w chmurze lub na stacji roboczej programisty. Prawie każda dystrybucja jest dostępna w celu dopasowania do konkretnego przypadku użycia. Szukaj głównych dostawców technologii chmurowych, takich jak Amazon Web Services, Google Cloud i Microsoft Azure. Zrozumiesz, że wszystkie oferują zarządzane usługi Kubernetes, podczas gdy dystrybucje z jednym węzłem, takie jak Minikube i K3, są dostępne do użytku lokalnego.
  • Super Extensivity – K8s to zbiór wielu funkcjonalności. Jakby tego było mało, możesz przyspieszyć jego możliwości za pomocą rozszerzeń. Możesz tworzyć niestandardowe typy obiektów, operatorów i kontrolery, aby usprawnić swoje obciążenia.
  • Architektura Kubernetesa

    W swej istocie architektura Kubernetes składa się z jednego węzła głównego i dwóch węzłów roboczych. Węzeł nadrzędny wykonuje polecenia w klastrze, podczas gdy węzły robocze (podrzędne) uruchamiają aplikacje zgodnie z decyzją nadrzędną.

    źródło: kubernetes.io

    Oto dalszy podział.

    Węzły główne

    Węzeł główny dyktuje stany klastra i decyduje o działaniach poszczególnych węzłów. Do skonfigurowania węzła głównego wymaganych jest kilka procesów.

  • Serwer API
    Cała komunikacja klastra odbywa się tutaj. Jest to brama umożliwiająca wszystkim komponentom klastra wymianę informacji. Udostępnia API Kubernetes. Grają tu dwie główne role. Pierwszy to punkt wejścia, który umożliwia użytkownikom interakcję z klastrem. Na przykład wysyłanie żądań podczas korzystania z Kubectl. Po drugie, gatekeeping w celu uwierzytelniania i sprawdzania poprawności żądań. W takim przypadku tylko niektórzy użytkownicy mogą wykonywać żądania.
  • Planista
    Harmonogram przypisuje aplikacje lub obiekty obciążenia Kubernetes do węzła procesu roboczego. W tym przypadku program planujący umieszcza zasobniki w węzłach na podstawie wymagań dotyczących zasobów. A kiedy mówisz o podach, to tylko mała jednostka wdrożenia w Kubernetes.
  • Kierownik kontrolera
    Ta jednostka obsługuje klastry, takie jak awarie węzłów, aby utrzymać prawidłową liczbę podów. Wykrywa zmiany stanu klastra, takie jak umieranie strąków, i próbuje przywrócić pierwotny stan strąków. Na przykład, jeśli kapsuła przypadkowo zginie, menedżer kontrolera prosi program planujący o zatwierdzenie, który węzeł uruchamia nową kapsułę jako zamiennik, a kubelet uruchamia nową kapsułę.
  • itd
    Jest również nazywany mózgiem klastra. Jednostka jest magazynem wartości klucza dla konfiguracji klastra. Oznacza to, że wszystkie zmiany klastra są dokonywane tutaj. Możesz utworzyć kopię zapasową klastra, zapisując rozproszony magazyn wartości kluczy. Należy jednak pamiętać, że są tu przechowywane tylko dane stanu klastra, a nie dane aplikacji. Ta jednostka jest specjalnie przeznaczona do przechowywania informacji o stanie klastra i wykorzystywania ich do poprzednich procesów, które uświadamiają im o klastrze.
  • Węzły podrzędne

    Każdy węzeł podrzędny jest instalowany z trzema procesami węzłowymi, które umożliwiają K8s interakcję z nim i oddzielne uruchamianie strąków w każdym węźle. Wymagane procesy to:

  • Kubelet
    Jest to podstawowa usługa Kubernetes, która uruchamia wykonywanie dla warstwy wykonawczej kontenera. Jeśli usuniesz tę jednostkę, Kubernetes to nic innego jak interfejs API REST zatwierdzony przez magazyn klucz-wartość. Domyślnie K8s wykonuje aplikację kontenera. Kontenery są zawsze odizolowane od siebie i bazowego systemu hosta. Okazało się, że analitycznie oddziela zarządzanie poszczególnymi aplikacjami od siebie oraz od infrastruktury fizycznej lub wirtualnej.

    Podczas gdy kontrola dostępu API może odrzucić pody lub dodać dodatkowe ograniczenia, kubelet jest ostatecznym ratyfikatorem tego, jakie pody działają w określonym węźle, a nie harmonogramy czy zestawy demonów. Podsumowując, kubelety wchodzą w interakcję z węzłem i kontenerem. Pobiera również pliki konfiguracyjne i uruchamia strąki przy użyciu środowiska wykonawczego kontenera.

  • Czas działania kontenera
    Ta sekcja obsługuje kontenery. Na przykład możesz użyć Dockera, rkt lub conatinered, aby dowiedzieć się więcej o działaniu kontenerów.
  • Kube-proxy
    Ta jednostka zapewnia warstwę abstrakcji dla grup węzłów w ramach typowych zasad, takich jak w przypadku równoważenia obciążenia. Wszystkie węzły stosują Kube-proxy, aby zapewnić wirtualny adres IP dla klientów uzyskujących dostęp do dynamicznych zasobników. Ta struktura jest rozwiązaniem umożliwiającym równoważenie obciążenia przy jednoczesnym utrzymaniu niskiego narzutu wydajności.
  • Jak działa konteneryzacja

    Konteneryzacja polega na wirtualizacji wszystkich potrzebnych elementów aplikacji w jedną całość. Pod kontenerami znajduje się zbiór bibliotek, plików binarnych i wszystkich potrzebnych konfiguracji aplikacji. Nie obejmują one jednak zasobów jądra ani zwirtualizowanego sprzętu.

    Ostatecznie wykonaj środowiska wykonawcze kontenerów „na wierzchu”, które określają zasoby. Ponieważ kontenery zawierają tylko podstawowe komponenty i zależności aplikacji, są lekkie, a przez to szybsze, w przeciwieństwie do innych maszyn wirtualnych.

    Przeczytaj także: Kontenery a maszyny wirtualne: wyjaśnianie różnic

    Jak zainstalować i skonfigurować Kubernetes

    Spędziłem tak dużo czasu zajmując się teorią; sekcja kaskadowa będzie miała charakter taktyczny i będzie wymagała praktycznego doświadczenia z kontenerami. Ten samouczek obejmuje w szczególności instalację w systemie operacyjnym Windows.

    Istnieje wiele sposobów wykonywania instalacji w systemie Windows; możesz wybrać wiersz poleceń lub graficzny interfejs użytkownika. Należy jednak upewnić się, że spełniają one następujące wymagane specyfikacje.

    Twój sprzęt wymaga węzła głównego z co najmniej 2 GB pamięci i 700 MB dla węzła roboczego. Wymagania dotyczące oprogramowania, Hype-v, Docker dla komputerów stacjonarnych, unikalny adres Mac i unikalny identyfikator UUID produktu dla każdego węzła. Oto podejście krok po kroku.

    Instalacja i konfiguracja Hyper-V

    Hyper-V to domyślne oprogramowanie do wirtualizacji systemu Windows. Zasadniczo jest to VirtalBox na sterydach. Pozwala zarządzać maszynami wirtualnymi za pomocą interfejsu GUI firmy Microsoft lub wiersza poleceń. Aby włączyć Hyper-V, wykonaj następujące kroki.

  • Otwórz Panel sterowania.
  • Kliknij programy z lewego panelu.
  • Na stronie programu i funkcji kliknij opcję „Włącz lub wyłącz funkcje systemu Windows”.
  • Wybierz funkcje Hyper-V i Hypervisor dla systemu Windows.
  • Następnie wybierz dobrze w tym kroku; urządzenie powinno zostać ponownie uruchomione, aby aktywować nowe ustawienia.
  • Od czasu do czasu komputer może uruchamiać się ponownie, aby upewnić się, że wszystko jest poprawnie skonfigurowane. Możesz zweryfikować powodzenie instalacji, wprowadzając następujące polecenie w Power Shell.

    Get-WindowsOptionalFeature -Online -Nazwa funkcji Microsoft-Hyper-V

    Potwierdź, że ekran jest wypełniony stanem „włączony”.

    Instalowanie Dockera

    Jak już wiesz, K8s to narzędzie do orkiestracji kontenerów zbudowane na bazie kontenerów; w tym przypadku Docker jest dobrym wyborem. K8s komunikuje się z Dockerem i zarządza wszystkim na poziomie przedsiębiorstwa. Ruszaj się, pobierając Docker dla Windows. Jeśli zastanawiasz się, dlaczego konieczne jest korzystanie z platformy Docker Desktop, jest ona preferowana w celu uproszczenia tworzenia, dostarczania i uruchamiania aplikacji dokowanych (konteneryzowanych).

    Jest to również najszybszy sposób tworzenia aplikacji platformy Docker w systemie Windows przy użyciu funkcji Hyper-V i sieci. Po udanej instalacji Docker jest zawsze dostępny na dowolnym terminalu, o ile jest uruchomiony. Szczegółowy przewodnik po instalacji można znaleźć w oficjalnej dokumentacji Dockera. Jeśli po instalacji napotkasz jakiekolwiek problemy, takie jak ukryte ikony, problem można rozwiązać, ponownie uruchamiając komputer.

    Instalacja Kubernetesa

    Docker GUI pozwala konfigurować ustawienia, instalować i włączać Kubernetes. Aby zainstalować K8s, wykonaj następujące kroki.

  • Kliknij prawym przyciskiem myszy ikonę Docker w zasobniku i wybierz właściwości.
  • Wybierz „Ustawienia” z rozwijanego menu po kliknięciu „Właściwości”.
  • W lewym panelu wybierz `Kubernetes` i kliknij `Zastosuj`.
  • Docker zainstaluje następnie dodatkowe pakiety i zależności. Proces ten trwa od pięciu do dziesięciu minut, w zależności od szybkości Internetu. Możesz użyć aplikacji Docker, aby upewnić się, że wszystko działa poprawnie.

    Ponieważ aplikacje Kubernetes można wdrażać przy użyciu interfejsu wiersza polecenia, może być konieczne zainstalowanie pulpitu nawigacyjnego K8s, ponieważ nie jest on instalowany domyślnie. Zainstaluj pulpit nawigacyjny, wykonując następujące czynności.

  • Pobierz konfigurację YAML.
  • Wdróż aplikację przy użyciu tego kodu: . Kubectl Apply -f .\recommended.yaml.
  • Potwierdź, że wszystko jest dobrze ustawione przez: kubectl.exe get -f .\recommended.yaml.txt.
  • Aby uzyskać dostęp do pulpitu nawigacyjnego, uruchom następujące polecenie w Power Shell (nie CMD)

  • Uruchom następujący kod ((kubectl -n kube-system opisz tajne domyślne | select-string „token:”) – split „+”)[1]
    • Skopiuj wygenerowany token i uruchom serwer proxy kubectl.
  • W przeglądarce otwórz ten link.
  • Kliknij `Token` i wklej tutaj swój token.
  • Zalogować się.
  • Jeśli dotarłeś tutaj, brawo, twój ekran powinien być wypełniony pulpitem nawigacyjnym K8s. Teraz możesz zarządzać swoimi aplikacjami bez wykonywania ciężkiej pracy przy użyciu interfejsu CLI.

    Przeczytaj także: Jak zainstalować Kubernetes na Ubuntu 18

    Jak stworzyć i zarządzać klastrem Kubernetes

    Jeśli śledziłeś tutaj, powinieneś pomyślnie zainstalować Kubernetes na swoim hoście. Następnie wykonaj następujące kroki, aby utworzyć i wykonać proste zarządzanie klastrem:

  • Skonfiguruj sieć – tutaj musisz skonfigurować sieć między węzłami klastra; pozwolić im komunikować się ze sobą.
  • Skonfiguruj uwierzytelnianie klastra — Utwórz mechanizmy uwierzytelniania i autoryzacji dostępu do klastra.
  • Skonfiguruj główne komponenty; obejmuje serwer API, program planujący i menedżera kontrolera.
  • Dołącz do węzłów procesu roboczego — połącz węzły procesu roboczego z klastrem przy użyciu plików konfiguracyjnych dostarczonych przez proces instalacji klastra.
  • Wdrażaj dodatki — możesz instalować rozszerzenia w celu zwiększenia funkcjonalności klastra.
  • Zarządzaj obciążeniami — nadszedł czas na wdrożenie aplikacji.
  • Chociaż jest to tylko omówienie procesu tworzenia klastra, obejmuje on wiele kroków obejmujących kilka poleceń. Oto oficjalny przewodnik dotyczący tworzenia klastrów przed wdrożeniem. Powinien być twoją przewodnią ręką.

    Jak wdrożyć swoją pierwszą aplikację przy użyciu Kubernetes

    Najczęstszym poleceniem podczas korzystania z K8s jest zasób akcji kubectl, który umożliwia wykonywanie określonych czynności, takich jak tworzenie lub usuwanie określonego zasobu.

    Jeśli utkniesz, możesz użyć opcji –help po określonej komendzie, aby uzyskać dodatkowe informacje.

    Na przykład Kubernetes otrzymuje węzły –help. Wdróż swoją pierwszą aplikację K8s za pomocą polecenia kubectl createployment Kubernetes-bootcamp –image=gcr.io/google-samples/Kubernetes-bootcamp:v1.

    Ostatnie słowa

    Ten przewodnik był punktem wyjścia do technologii Kubernetes. Poznałeś zalety, funkcje i architekturę Kubernetes. Na szczęście być może trzeba było odnieść się do kilku wskazówek (zasobów zewnętrznych), aby zacząć; wyjaśniło, jak działają rzeczy pod maską.

    Chociaż zrozumienie całego stosu technologii jako początkujący może wydawać się przytłaczające, ten post był płynną wskazówką, która pomoże Ci zacząć z K8. Będziesz potrzebował trochę praktyki, aby nabrać pewności w korzystaniu z tej technologii, dlatego odsyłam Cię do oficjalnej dokumentacji Kubernetes jako uzupełniającego odniesienia. Im więcej masz praktyki, tym szybciej staniesz się ekspertem od K8.

    Następnie zapoznaj się z samouczkami Kubernetes dla początkujących do opanowania.