Tworzenie dodatkowych nodegroups w klastrze Kubernetes na platformie NSIS OpenStack Magnum
Korzyści wynikające z używania nodegroups
Nodegroup to grupa węzłów klastra Kubernetes, które mają tę samą konfigurację i uruchamiają kontenery użytkownika. Jeden klaster może zawierać wiele nodegroups, więc zamiast tworzyć kilka niezależnych klastrów, można utworzyć tylko jeden, a następnie rozdzielić grupy na nodegroups.
Grupa węzłów rozdziela role w klastrze i może
ograniczyć zakres szkód, jeśli dana grupa ulegnie uszkodzeniu,
regulować liczbę żądań API pochodzących od określonej grupy, oraz
określać zakresy uprawnień do poszczególnych typów węzłów i powiązanych z nimi obciążeń.
Inne zastosowania ról nodegroups obejmują również:
cele testowe,
Jeśli środowisko Kubernetes ma niewielkie zasoby, można utworzyć minimalny klaster Kubernetes, a następnie dodać nodegroups i w ten sposób zwiększyć liczbę węzłów kontrolnych i roboczych.
Węzły w grupie mogą być tworzone, aktualizowane i usuwane indywidualnie bez wpływu na resztę klastra.
Co zostanie omówione?
Struktura polecenia openstack coe nodelist
Jak wygenerować zarządzalne dane wyjściowe z zestawu poleceń nodelist
Jak wyświetlić listę nodegroups dostępnych w klastrze
Jak wyświetlić zawartość konkretnej grupy węzłów w klastrze
Jak utworzyć nową grupę węzłów
Jak usunąć istniejącą grupę węzłów?
Jak aktualizować nodegropus
Jak zmieniać rozmiar grupy węzłów
Korzyści z używania nodegrops w klastrach Kubernetes
Wymagania wstępne
Nr 1 Hosting
Wymagane jest konto hostingowe NSIS z interfejsem Horizon https://horizon.cloudferro.com.
Nr 2 Utworzenie klastrów za pomocą CLI
Artykuł Jak korzystać z interfejsu wiersza poleceń dla klastrów Kubernetes w NSIS OpenStack Magnum wprowadzi cię w tworzenie klastrów za pomocą interfejsu wiersza poleceń.
Nr 3 Podłączenie klienta openstack do chmury
Przygotuj klienty openstack i magnum, wykonując Krok 2 Podłączanie klientów OpenStack i Magnum do chmury Horizon z artykułu Jak zainstalować klientów OpenStack i Magnum dla interfejsu wiersza poleceń w NSIS Horizon?.
Nr 4 Sprawdzenie dostępnych kwot
Przed utworzeniem dodatkowych grup węzłów sprawdź stan zasobów za pomocą poleceń Horizon Computer => Overview. Zobacz artykuł Pogląd dashboardu – quoty projektów i ograniczenia flavorów na NSIS Cloud.
Podpolecenia nodegroup
Po utworzeniu klastra Kubernetes na platformie OpenStack Magnum dostępnych jest pięć poleceń nodegroup:
openstack coe nodegroup create
openstack coe nodegroup delete
openstack coe nodegroup list
openstack coe nodegroup show
openstack coe nodegroup update
Dzięki nim można zmienić przeznaczenie klastra, aby uwzględnić różne obrazy, zmienić dostęp do woluminów, ustawić maksymalne i minimalne wartości dla liczby węzłów i tak dalej.
Krok 1 Uzyskaj dostęp do aktualnego stanu klastrów i ich nodegroups
Klastry dostępne w systemie można wyświetlić za pomocą polecenia:
openstack coe cluster list --max-width 120
Domyślny proces tworzenia klastrów Kubernetes na OpenStack Magnum tworzy dwie nodegroups – default-master i default-worker. Użyj poleceń
openstack coe nodegroup list kubelbtrue
openstack coe nodegroup list k8s-cluster
aby wyświetlić listę domyślnych nodegroups dla obu klastrów kubelbtrue i k8s-cluster.
Grupa węzłów default-worker nie może zostać usunięta ani ponownie skonfigurowana, więc należy ją zaplanować z wyprzedzeniem podczas tworzenia klastra bazowego.
Krok 2: Jak utworzyć nową grupę węzłów
W tym kroku poznasz parametry dostępne dla polecenia nodegroup create. Jego ogólna struktura jest następująca:
openstack coe nodegroup create [-h]
[--docker-volume-size <docker-volume-size>]
[--labels <KEY1=VALUE1,KEY2=VALUE2;KEY3=VALUE3...>]
[--node-count <node-count>]
[--min-nodes <min-nodes>]
[--max-nodes <max-nodes>]
[--role <role>]
[--image <image>]
[--flavor <flavor>]
[--merge-labels]
<cluster> <name>
Teraz utworzysz grupę węzłów składającą się z dwóch członków. Grupa będzie się nazywać testing, jej rolą będzie test i dodasz ją do klastra k8s-cluster:
openstack coe nodegroup create \
--node-count 2 \
--role test \
k8s-cluster testing
Następnie użyj polecenia
openstack coe nodegroup list k8s-cluster
aby dwukrotnie wyświetlić listę nodegroups. Za pierwszym razem będą one w stanie tworzenia, za drugim razem, po kilku sekundach, zostaną już utworzone.
W Horizon użyj polecenia Orchestration => Stacks, aby wyświetlić listę mechanizmów tworzących nowe instancje. W tym przypadku stack wygląda następująco:
Pozostając w Horizon, kliknij polecenia Contaner Infra => Clusters => k8s-clusters i zobacz, że w sumie jest teraz pięć węzłów:
Krok 3 Użycie opcji role do filtrowania nodegroups w klastrze
Grupy węzłów mogą być filtrowane według roli. Polecenie pokazujące tylko grupę węzłów test jest następujące:
openstack coe nodegroup list k8s-cluster --role test
Kilka grup węzłów może współdzielić tę samą nazwę roli.
Role mogą być używane do planowania węzłów podczas korzystania z polecenia kubectl bezpośrednio na klastrze.
Krok 4: Wyświetlenie informacji szczegółowych o utworzonej grupie węzłów
Polecenie show wyświetla informacje szczegółowe o grupie węzłów w różnych formatach - json, table, shell, value lub yaml. Domyślnym formatem jest table, ale użyj parametru –max-width, aby ograniczyć liczbę kolumn w tabeli:
openstack coe nodegroup show --max-width 80 k8s-cluster testing
Krok 5: Usunięcie istniejącej grupy węzłów
W tym kroku spróbujesz utworzyć grupę węzłów o niewielkim rozmiarze:
openstack coe nodegroup create \
--node-count 2 \
--role test \
--image cirros-0.4.0-x86_64-2 \
--flavor eo1.xsmall \
k8s-cluster cirros
Po godzinie polecenie zostało anulowane, a tworzenie nie powiodło się. Zasoby pozostaną jednak zamrożone w systemie, należy je zatem usunąć.
Jednym ze sposobów jest użycie podpolecenia CLI delete, jak poniżej:
openstack coe nodegroup delete k8s-cluster cirros
Status zostanie zmieniony na DELETE_IN_PROGRESS.
Innym sposobem jest znalezienie instancji tych utworzonych węzłów i usunięcie ich w interfejsie Horizon. Znajdź istniejące instancje za pomocą poleceń Compute => Instance i przefiltruj je według Instance Name z tekstem k8s-cluster-cirros-. Może to wyglądać następująco:
Następnie usuń je, klikając czerwony przycisk Delete Instances.
W prawym górnym rogu zostanie wyświetlony tekst potwierdzenia w chmurze.
Niezależnie od wybranej metody, instancje nie zostaną usunięte natychmiast, ale raczej zaplanowane do usunięcia w najbliższej przyszłości.
Domyślne grupy węzłów głównych i roboczych nie mogą zostać usunięte, ale wszystkie inne mogą.
Krok 6 Aktualizacja istniejącej grupy węzłów
W tym kroku bezpośrednio zaktualizujesz istniejącą grupę węzłów, zamiast dodawać i usuwać je po kolei. Przykładowe polecenie to:
openstack coe nodegroup update k8s-cluster testing replace min_node_count=1
Zamiast replace można też użyć czasowników add i delete.
W powyższym przykładzie ustawiono minimalną wartość liczby węzłów na 1. Poprzednio ta wartość wynosiła 0, ponieważ parametr min_node_count nie został określony, a jego domyślną wartością jest 0.
Krok 7 Zmiana wielkości grupy węzłów
Zmiana wielkości grupy węzłów jest podobna do zmiany rozmiaru klastra, z dodanym parametrem –nodegroup. Obecnie liczba węzłów w grupie testing wynosi2. Ustaw ją na 1:
openstack coe cluster resize k8s-cluster --nodegroup testing 1
Aby zobaczyć wynik, wykonaj polecenie
openstack coe nodegroup list --max-width 120 k8s-cluster
Otrzymasz następujący wynik:
Klaster nie może być skalowany poza minimalną i maksymalną liczbę węzłów ustawionymi podczas tworzenia grupy węzłów.
Oto jak wygląda stan sieci po tych wszystkich zmianach (polecenia Network => Network Topology => Small w interfejsie Horizon):