Jak utworzyć klaster Kubernetes przy użyciu NSIS OpenStack Magnum
W tym samouczku zaczniesz od pustego ekranu Horizon, a efektem końcowym będzie uruchomienie pełnego klastra Kubernetes.
Co zostanie omówione?
Tworzenie nowego klastra Kubernetes przy użyciu jednego z domyślnych szablonów klastrów
Wizualna interpretacja utworzonych sieci i węzłów klastra Kubernetes
Wymagania wstępne
Nr 1 Hosting
Wymagane jest konto hostingowe NSIS z interfejsem Horizon https://horizon.cloudferro.com.
Zasoby, których potrzebujesz i używasz, będą odzwierciedlone w stanie portfela Twojego konta. Sprawdź stan swojego konta na stronie https://tm.nsiscloud.polsa.gov.pl/login i jeśli nie zamierzasz już korzystać z klastra, usuń go całkowicie, aby obniżyć koszty zasobów.
Klastry Magnum utworzone przez określonych użytkowników są powiązane z tokenem impersonacji i w przypadku usunięcia tego użytkownika z projektu, klaster utraci uwierzytelnienie do Openstack API, co oznacza że klaster nie będzie działał. Typowy scenariusz zakłada, że menedżer dzierżawy tworzy konta użytkowników i pozwala im tworzyć klastry Kubernetes. Później, w tym scenariuszu, gdy klaster będzie działał, użytkownik zostanie usunięty z projektu. Klaster będzie nadal obecny, ale użytkownik nie będzie mógł na przykład tworzyć nowych klastrów lub ządania dotyczące woluminu będą działać nieprawidłowo itp.
W związku z tym dobrą praktyką przy tworzeniu nowych klastrów Kubernetes jest utworzenie konta-usługi dedykowanego do tworzenia klastra Magnum. Zasadniczo należy tylko poświęcić jedno konto na jeden klaster Kubernetes.
Nr 2 Klucze prywatne i publiczne
Para kluczy SSH utworzona w pulpicie nawigacyjnym OpenStack. Aby ją utworzyć, postępuj zgodnie z artykułem Jak utworzyć parę kluczy w OpenStack Dashboard na NSIS Cloud.
Para kluczy utworzona w tym artykule nosi nazwę „sshkey”. Zostanie ona użyta jako jeden z parametrów do utworzenia klastra Kubernetes.
Krok 1 Ekran tworzenia nowego klastra
Kliknij Container Infra, a następnie Clusters.
Nie ma jeszcze źadnych klastrów, więc kliknij przycisk + Create cluster po prawej stronie ekranu.
Po lewej stronie w niebieskim kolorze widać głowne opcje - trzy z nich mają gwiazdkę, oznaczajacą że są to pola obowiązkowe; będziesz musiał w nie wejść oraz pola w nich wypełnić nowymi danymi lub zostawić domyślne. Kiedy uzupełnisz je wszystkie, kliknij Submit, aby zatwierdzić konfigurację i stworzyć klaster.
Nazwa klastra
Ponieważ jest to twój pierwszy klaster, nazwij go po prostu Kubernetes.
Nazwa klastra nie może zawierać spacji. Użycie nazwy takiej jak XYZ k8s Production spowoduje wyświetlenie komunikatu o błędzie, natomiast nazwa taka jak XYZ-k8s-Production nie wygeneruje błędu.
Szablon klastra
Szablon klastra to plan podstawowej konfiguracji klastra, w którym numer wersji odzwierciedla używaną wersję Kubernetes.
Natychmiast zobaczysz, w jaki sposób jest stosowany szablon klastra:
Availability Zone
Strefa dostępności nova to nazwa powiązanego modułu w OpenStack i jest to jedyna oferowana tutaj opcja.
Keypair
Zakładając, że zostały spełnione warunki z sekcji Wymaganie wstępne Nr. 2, wybierz parę kluczy sshkey.
Addon Software - Enable Access to EO Data
To pole jest specyficzne dla systemów OpenStack, które są rozwijane przez firmę hostingową Cloudferro. EODATA oznacza tutaj Earth Observation Data i odnosi się do danych uzyskiwanych z satelitów naukowych monitorujących Ziemię.
Zaznaczenie tego pola spowoduje zainstalowanie sieci, która będzie miała dostęp do pobieranych danych satelitarnych.
Jeśli dopiero próbujesz zapoznać się z Kubernetes na OpenStack, pozostaw tę opcję niezaznaczoną. I odwrotnie: jeśli chcesz przejść do środowiska produkcyjnego i korzystać z danych satelitarnych, włącz ją.
Informacja
Istnieje etykieta szablonu klastra o nazwie eodata_access_enabled=true, która - jeśli zostanie włączona - będzie miała ten sam skutek, czyli utworzenie sieci do łączenia się z EODATA.
Po wprowadzeniu wszystkich danych ekran wygląda następująco:
Kliknij przycisk Next z prawej strony na dole lub opcję Size z lewego menu głównego ekranu, aby przejść do następnego kroku definiowania klastra Kubernetes.
Krok 2 Definiowanie węzłów master i worker
Ogólnie rzecz biorąc, węzły główne są używane do hostowania wewnętrznej infrastruktury klastra, podczas gdy węzły robocze są używane do hostowania aplikacji K8s.
Przed wprowadzeniem danych to okno wygląda następująco:
Jeśli istnieją pola z wartościami domyślnymi, takie jak Flavor Master Nodes i Flavor Worker Nodes, wartości te zostały wstępnie zdefiniowane w szablonie klastra.
Liczba Master Nodes master
Klaster Kubernetes składa się z węzłów master i worker. W rzeczywistych zastosowaniach typowa konfiguracja zawiera 3 węzły główne, aby zapewnić wysoką dostępność infrastruktury klastra. W tym przypadku chcemy utworzyć pierwszy klaster w nowym środowisku, więc wystarczy tylko 1 węzeł główny.
Flavor Master Nodes
Wybierz eo1.large jako flavor master nodes.
Liczba węzłów worker
Wpisz 3. Ma to na celu jedynie wprowadzanie w zagadnienie. W rzeczywistości klaster może składać się z wielu węzłów worker. Wytyczne dotyczące rozmiaru klastra wykraczają poza zakres tego artykułu.
Flavor Worker Nodes
Ponownie wybierz eo1.large.
Automatyczne skalowanie
Gdy istnieje duże zapotrzebowanie na usługi węzłów worker, system Kubernetes może się skalować, by używać większej liczby węzłów worker. Nasze przykładowe ustawienie to minimum 2 i maksimum 4 węzły główne. Przy tym ustawieniu liczba węzłów będzie dynamicznie dostosowywana między tymi wartościami w oparciu o bieżące obciążenie (liczba podów i żądania zasobów z uruchomionymi aplikacjami K8S w klastrze).
Po wprowadzeniu wszystkich danych ekran Size wygląda następująco:
Aby kontynuować, kliknij przycisk Next z prawej strony na dole lub opcję Network z menu głównego po lewej stronie.
Krok 3 Definiowanie sieci i loadbalancera
Jest to ostatni z obowiązkowych ekranów i niebieski przycisk Submit w prawym dolnym rogu jest teraz aktywny. Jeśli przycisk nie jest aktywny, użyj przycisku Back, aby poprawić wartości z poprzednich ekranów.
Włącz load balancer dla Master Nodes
Opcja Włącz load balancer dla master nodes zostanie automatycznie zaznaczona po wybraniu więcej niż jednego master node. Korzystanie z wielu węzłów master zapewnia wysoką dostępność infrastruktury klastra, a w takim przypadku load balancer będzie niezbędny do dystrybucji ruchu między master nodes.
Jeśli wybrano tylko jeden master node, co może mieć znaczenie w scenariuszach nieprodukcyjnych, na przykład testowych, nadal będzie dostępna opcja dodania lub pominięcia load balancera. Należy pamiętać, że korzystanie z load balancera z master node jest nadal istotną opcją, ponieważ umożliwi ona dostęp do klastra spoza sieci klastra. Jeśli ta opcja nie zostanie wybrana, konieczne będzie korzystanie z dostępu SSH do master node.
Utwórz nową sieć
To pole jest włączone, co oznacza, że system utworzy sieć tylko dla tego klastra. Ponieważ klastry Kubernetes potrzebują podsieci do wzajemnej komunikacji, najpierw zostanie utworzona powiązana podsieć, która będzie używana później.
Zdecydowanie zaleca się korzystanie z automatycznego tworzenia sieci podczas tworzenia nowego klastra.
Usunięcie zaznaczenia z tego pola wyboru udostępnia również opcję korzystania z istniejącej sieci.
Użyj istniejącej sieci
Korzystanie z istniejącej sieci jest bardziej zaawansowaną opcją. Należy najpierw utworzyć w OpenStack sieć dedykowaną dla tego klastra wraz z niezbędnymi dostosowaniami. Tworzenie takiej niestandardowej sieci wykracza poza zakres tego artykułu. Nie należy używać sieci innego klastra, sieci projektu ani sieci EODATA.
Jeśli masz istniejącą sieć i chcesz kontynuować, musisz wybrać sieć i podsieć z listy rozwijanej poniżej:
Oba pola są oznaczone gwiazdką, co oznacza, że w każdym z nich należy podać konkretną wartość.
API klastra
Ustawienie „Accessible on the public internet” oznacza, że adresy floating IP zostaną przypisane zarówno do węzłów master, jak i worker. Opcja ta jest zazwyczaj nadmiarowa i ma wpływ na bezpieczeństwo. Jeśli nie masz konkretnych wymagań, pozostaw tę opcję z ustawieniuem „prywatnym”. Później zawsze można przypisać adresy floating IP do wymaganych węzłów w sekcji „Compute” w Horizon.
Konstroler Ingress
Korzystanie z ingress jest bardziej zaawansowaną funkcją związaną z równoważeniem obciążenia ruchu do aplikacji Kubernetes.
Jeśli dopiero zaczynasz korzystać z Kubernetes, raczej nie będziesz potrzebować tej funkcji od razu, więc możesz pominąć tę opcję.
Krok 4 Opcje zaawansowane
Zarządzanie opcjami
W tym oknie znajduje się tylko jedna opcja, Auto Healing, i związane z nią pole Automatically Repair Unhealthy Nodes.
Node jest podstawową jednostką klastra Kubernetes, a oprogramowanie systemowe Kubernetes automatycznie sprawdza stan każdego klastra. Jeśli node nie jest gotowy lub jest niedostępny, system zastąpi uszkodzony node zdrowym, oczywiście pod warunkiem, że to pole jest zaznaczone.
Jeśli po raz pierwszy wypróbowujesz tworzenie klastrów Kubernetes, automatyczne naprawianie może cię nie interesować. Jednak w środowisku produkcyjnym funkcja automatycznego naprawiania powinna być zawsze włączona.
Opcja zaawansowana
Opcja Advanced pozwala na wprowadzenie tak zwanych labels, czyli nazwanych parametrów dla systemu Kubernetes. Zwykle nie trzeba tu nic wpisywać.
Etykiety mogą zmienić sposób tworzenia klastra. Istnieje zestaw etykiet o nazwie Template and Workflow Labels, które system ustawia domyślnie. Jeśli to pole wyboru pozostanie niezaznaczone, domyślne etykiety będą używane bez zmian. Gwarantuje to, że klaster zostanie utworzony z zachowaniem wszystkich istotnych parametrów. Nawet jeśli dodasz własne etykiety, jak pokazano na powyższym obrazku, wszystko będzie nadal działać.
Jeśli włączysz pole I do want to override Template and Workflow Labels i jeśli użyjesz dowolnego szablonu i etykiety przepływu pracy według nazwy, zostaną one skonfigurowane w określony sposób. Z tej opcji należy korzystać bardzo rzadko, jeśli w ogóle, i tylko wtedy, gdy na pewno wiesz, co robisz.
Krok 5 Tworzenie klastra
Po kliknięciu przycisku Submit OpenStack rozpocznie tworzenie klastra Kubernetes. W prawym górnym rogu okna pojawi się komunikat chmury z zielonym tłem informujący, że tworzenie klastra zostało rozpoczęte.
Generowanie klastrów trwa zazwyczaj od 15 do 20 minut. Zostanie ono automatycznie przerwane, jeśli czas tworzenia przekroczy 60 minut.
Jeśli wystąpi jakikolwiek problem z utworzeniem klastra, system zasygnalizuje to na różne sposoby. W prawym górnym rogu może pojawić się komunikat na czerwonym tle, taki jak ten:
Wystarczy powtórzyć proces, a w większości przypadków przejdziesz do następującego ekranu:
Kliknij nazwę klastra Kubernetes i zobacz, jak będzie wyglądał, jeśli wszystko poszło dobrze.
Krok 6 Przegląd stanu klastra
Oto, co OpenStack Magnum stworzył dla ciebie w wyniku wypełnienia danych na tych trzech ekranach:
Nowa sieć o nazwie Kubernetes wraz z podsiecią, gotowa do późniejszego połączenia.
Nowe instancje - maszyny wirtualne, które służą jako węzły.
Nowy router zewnętrzny.
Nowe grupy zabezpieczeń i oczywiście
W pełni funkcjonalny klaster Kubernetes wykorzystujący wszystkich te elementy.
Można zauważyć, że liczba node w klastrze wynosiła początkowo 3, ale po pewnym czasie klaster automatycznie przeskalował się do 2 węzłów. Jest to oczekiwane i jest wynikiem działania autoskalera, który wykrył, że klaster jest przez większość czasu bezczynny pod względem obciążenia aplikacji.
Istnieje jeszcze jeden sposób, w jaki możemy wyświetlić konfigurację naszego klastra i sprawdzić wszelkie odchylenia od wymaganego stanu. Kliknij opcję Network w menu głównym, a następnie Network Topology. Zobaczysz graficzną reprezentację sieci w czasie rzeczywistym. Gdy jeden z elementów klastra zostanie dodany, zostanie on wyświetlony na ekranie.
Maszyny wirtualne, które zostały utworzone dla master nodes i worker nodes można zobaczyć również w panelu „Compute” w Horizon :
Nazwy węzłów zaczynają się od kubernetes, ponieważ jest to nazwa klastra pisana małymi literami.
Zasoby związane z jedną próbą utworzenia klastra nie są automatycznie odzyskiwane przy ponownej próbie utworzenia nowego klastra. Dlatego kilka prób z rzędu doprowadzi do sytuacji patowej, w której żaden klaster nie zostanie utworzony, dopóki wszystkie powiązane zasoby nie zostaną zwolnione.
Co można zrobić dalej?
Masz teraz w pełni funkcjonalny klaster Kubernetes. Możesz:
używać gotowych obrazów Docker do automatyzacji instalacji aplikacji,
aktywować pulpit nawigacyjny Kubernetes i obserwować stan klastra online,
uzyskiwać dostęp do EODATA za pośrednictwem klastra
i tak dalej.
Oto kilka istotnych artykułów:
Dowiedz się więcej o ingress w artykule Korzystanie z Kubernetes Ingress w OpenStack Magnum w NSIS Cloud
Artykuł Jak korzystać z interfejsu wiersza poleceń dla klastrów Kubernetes w NSIS OpenStack Magnum pokazuje jak używać interfejsu wiersza poleceń do tworzenia klastrów Kubernetes.
Aby dowiedzieć się, jak uzyskać dostęp do nowo utworzonego klastra z linii poleceń, zobacz artykuł Jak uzyskać dostęp do klastra Kubernetes po wdrożeniu przy użyciu Kubectl na NSIS OpenStack Magnum?.
Aby pracować z EODATA z poziomu klastra Kubernetes, zobacz artykuł Dostęp do EODATA z podów Kubernetes w NSIS Cloud przy użyciu boto3.