Kubernetes MatchLabels

Kubernetes MatchLabels
W tym poście będziemy przede wszystkim omawiać etykiety, mecze i selektory oraz sposób, w jaki będą one wykorzystywane w zasadach, usługach i wdrożeniach. Będziesz wiedział, w jaki sposób Kubernetes Elementy takie jak Job, wdrożenie, zestaw repliki i zestaw demon wykorzystują te pomysły, gdy je zrozumiesz. Zacznijmy więc od definicji etykiet i meczów.

Co to są etykiety i mecz?

W Kubernetes etykiety są klawiszem/wartością sformatowaną przez metadane połączoną z obiektem. Dodatkowe informacje o rzeczy istotnej dla konsumenta lub obiektu są dostarczane za pomocą etykiet. Na przykład etykieta może zidentyfikować specyfikacje sprzętowe węzła lub czy obciążenie jest przeznaczone do testowania produkcji.

Etykiety służą jako niejawna technika grupowania podobnych obiektów, jednocześnie oferując mechanizm wyszukiwania użytkowników, kontrolerów i innych systemów.

Etykiety umożliwiają użytkownikom mapowanie własnych systemów organizacyjnych na elementy systemowe w luźno podłączony sposób, nie wymagając od klientów zapisywania mapowania.

Wielowymiarowe podmioty, takie jak wdrożenia usług, a także rurociągi przetwarzania wsadowe, są powszechne. Działania przekrojowe są często wymagane w zarządzaniu, co podważa kapsułkowanie rygorystycznie hierarchicznych reprezentacji, szczególnie nieelastycznych hierarchii podyktowanych raczej infrastrukturą niż użytkownikami.

MatchLabels to rodzaj mapy par kluczowych. Jedna para kluczowych wartości na mapie MatchLabels odpowiada elementowi MatchExpression z „Key” pola kluczowego, operatora „In” i tylko „wartość” w tablicy wartości. Kolekcja wymagań dotyczących selektora podsumowania nazywa się MatchExpressions.

W, istnieje, nieistnie i notin są ważnymi i wymaganymi operatorami. W przypadku „w” i „notin„ upewnij się, że ustawiony wartości są nieokreślone. Wszystkie wymagania MatchLabels i MatchExpressions są razem i wszystkie muszą zostać spełnione, aby dopasować.

Warunek wstępny:

Musimy zainstalować Ubuntu 20.04 Aby zastosować wiedzę teoretyczną i wykonać instrukcje w Kubernetes. Polecenia Kubectl są uruchamiane w systemie operacyjnym Linux w tym przykładzie. Aby uruchomić Kubernetes w systemie Linux, zainstaluj klaster minikube. Minikube ułatwia zrozumienie, zapewniając skuteczny mechanizm testowania poleceń i aplikacji.

Wykonaliśmy polecenie „Minikube Start” na terminalu, aby zainicjować minikube. To polecenie uruchamia klaster Kubernetes i tworzy maszynę wirtualną zdolną do wykonania klastra. Będzie również połączyć się z klastrem za pomocą instalacji Kubectl. Wyjście polecenia „Minikube Start” jest przedstawione poniżej.

Tworzenie wdrożenia

W tym przykładzie stworzyliśmy dwa wdrożenia. Jeden dla usługi internetowej, która działa na infrastrukturę wewnętrzną, a druga na infrastrukturze DMZ. Początkowe wdrożenie (nazwane DEP11.YAML) jest wytwarzany, jak pokazano poniżej.

Oto cały DEP11.plik konfiguracyjny YAML, który obejmuje pole MatchLabels.

Polecenie do utworzenia kapsułki jest następujące.

Wdrożenie (o nazwie: DEP12.YAML), który działa na infrastrukturze DMZ, pokazano poniżej.

Cały plik konfiguracyjny można znaleźć poniżej.

Po wdrożeniu strąków mają uruchomienie etykiet = nginx. Dla obiektu możliwych jest wiele etykiet; Jednak wiele etykiet z tym samym kluczem nie jest. Jeśli istnieje kilka wpisów na etykietę z tym samym kluczem w manifestie obiektu, używana jest ostatnia wartość.

Można tu zobaczyć znacznik selektora, który wdrożenie wykorzystuje do komunikacji z jego kapsułami. Pole selektora wdrożenia określa, w jaki sposób określa, które pods. Musisz najpierw wybrać etykietę z szablonu POD. Możliwe były również bardziej skomplikowane zasady wyboru, jeśli szablon POD spełnia kryteria. Oto polecenie tworzenia POD.

Aby zobaczyć etykiety kapsuły, użyj podkomenda GET:

Krągi uruchomione za pomocą powyższych manifestów wdrażania są pokazane w poniższym bloku kodu. Etykieta pod-template-hash jest stosowana automatycznie przez kontroler wdrażania.

Kubety dostarczone przez Kubectl GET PODS można filtrować za pomocą jednego lub więcej parametrów -selektora. W wyjściu etykiety są prezentowane jako dodatkowa kolumna.

Aby uzyskać wewnętrzne kapsuły Nginx, użyj kilku selektorów.

Kontroler wdrażania używa selektora w celu ustalenia, które kapsuły są zawarte we wdrożeniu. Obiekt replicaset jest tworzony po utworzeniu wdrożenia, a kontroler replikacji monitoruje go, aby upewnić się, że liczba POD -działająca jest zgodna z planowanym numerem.

Nasze wdrożenia mają obecnie cztery strąki w stanie gotowym.

Konfiguracja replikaza pokazano poniżej.

Oto reszta wyjścia kodu ogólnego.

Zmieńmy jedną z etykiet na kapsule, tak że nie odpowiada już naszemu selektowi. Sprawdź specyfikację MatchLabels, aby zobaczyć, co się stanie.

Po zmianie etykiety RUN na POD i wdrożeniu kolejnego POD w celu rozwiązania problemu, kontroler repliki może zlokalizować tylko trzy POD działające za pomocą selekcji MatchLabel.

Aby potwierdzić utworzenie wdrożenia, uruchom instrukcję „Kubectl Get wdroże”. Poniższe pola są prezentowane podczas kontroli wdrażania w klastrze: Nazwa, gotowa, aktualna, dostępna i wiekowa.

Jak widać poniżej, wykorzystaliśmy kilka kryteriów do pozyskiwania wewnętrznych strąków Nginx.

Wniosek:

W tym artykule wyjaśniono różnice między etykietami a meczami. Widzieliśmy już korzyści z zatrudnienia etykiet. Możliwości kategoryzacji i filtrowania etykiet kubernetes są fantastyczne, jak widać powyżej. Korzystanie z etykiet sprawi, że Twoje dzienniki będą bardziej odpowiednie, narzędzia monitorowania umożliwią ci wybrać pewne obciążenia zainteresowania, a skrypty Bash zapewnią większy zakres danych.