‫W tym YAML są dwa fragmenty metadanych,
‫które prawdopodobnie widziałeś w przykładach i
‫zastanawiałeś się, zastanawiając się, po co właściwie są etykiety
‫i adnotacje.
‫Prawdopodobnie nie zdawałeś sobie sprawy z ich znaczenia.
‫Są kluczowym składnikiem Kubernetes i tego, jak rzeczy się
‫ze sobą łączą.
‫O wiele bardziej niż rój.
‫Pierwszy to etykiety. Etykiety przechodzą pod kluczem
‫metadanych w katalogu głównym pliku, więc są
‫tam opcjonalne. Nie musisz ich umieszczać,
‫ale są one kluczową wartością lub listą kluczowych wartości pod
‫nagłówkiem etykiet.
‫Są tam z wielu powodów.
‫Nie zawsze są wymagane, ale możesz ich
‫potrzebować do wybierania obiektów, grupowania ich,
‫a nawet filtrowania później.
‫Może to być wszystko, co opisuje
‫obiekt lub zasób.
‫Może być kluczową parą wartości, że wartość jest po prostu
‫prawda lub fałsz.
‫Klucze mogą być dowolne.
‫Po prostu nie może być więcej niż jeden klucz w
‫każdym obiekcie, więc nie możesz mieć dwóch kluczy w
‫wierszu YAML dla tego samego obiektu, który ma
‫nazwę klucza, powiedzmy app, racja. Są one naprawdę używane
‫do opisu obiektu. Te zasoby, które tworzymy,
‫mają dla nich inne właściwości.
‫Może to środowisko takie jak prod, dev lub test.
‫Może to lokalizacja jak dmz,
‫backend lub frontend. Może to nazwa aplikacji, a
‫może nazwa klienta, jeśli hostujesz witryny klienckie lub
‫coś takiego. Może to być wszystko, czego
‫chcesz i nie ma zbyt wielu standardów.
‫Dokumentacja Kubernetes wymieniona w zasobach tutaj podaje kilka
‫przykładów, ale są to tylko przykłady.
‫W branży nie ma zbyt wielu standardów.
‫To, jak chcesz to opisać, zależy od
‫twojego zespołu i firmy.
‫Mamy też adnotacje. To rodzaj yin i yang.
‫Etykiety są bardzo proste.
‫Mają bardzo ograniczony rozmiar i jakie postacie możesz
‫w nich umieścić. Mają opisać zasób.
‫W przypadku adnotacji jest to bardziej złożone dane i
‫dane o wielu wartościach, i tym podobne.
‫Zazwyczaj zobaczysz adnotacje używane podczas dodawania niestandardowych rzeczy
‫do Kubernetes, które mogą rozmawiać z Kubernetes
‫i uzyskiwać z niego dane.
‫Adnotacje służą do przechowywania danych
‫konfiguracyjnych, np. Proxy i dane wejściowe często
‫przechowują różne konfiguracje, w różnych adnotacjach.
‫Tak więc niekoniecznie służą
‫one do opisu, ale do konfiguracji.
‫Wróćmy na chwilę do etykiet, ponieważ jest o wiele
‫więcej, co jest kluczem do zrozumienia, jak wszystkie te rzeczy
‫działają w Kubernetes.
‫Pierwszą rzeczą jest to, że możemy wykonywać proste filtry, ograniczając
‫się do etykiet z wiersza poleceń.
‫Możemy zrobić kapsułki i po prostu powiedzieć, pokaż mi
‫tylko kapsułki z tą etykietą.
‫Możesz nawet użyć przecinka, aby dodać wiele etykiet.
‫W rzeczywistości istnieje cały poziom składni tej rzeczy, w
‫której można wykonywać różne typy składni, różne lub
‫różne i.
‫Naprawdę, jest to jedna z tych rzeczy,
‫w których nie chcę cię tego wszystkiego uczyć, ponieważ będzie
‫to jak nauka Regex. Jest to coś, w czym tak naprawdę
‫nie nauczysz się tego, próbując raz.
‫Tylko wtedy, gdy będziesz go potrzebować,
‫naprawdę to zrozumiesz. Dokumentacja z Kubernetes jest
‫naprawdę świetna. Mają wiele linków,
‫które umieściłem w zasobach, które poprowadzą cię ścieżką na różne
‫sposoby, w których możesz potrzebować etykiet.
‫Szczerze mówiąc, tak naprawdę nie musisz się tego uczyć, dopóki nie
‫dowiesz się, że potrzebujesz go do rozwiązania problemu.
‫Możesz nawet użyć go do zastosowania poleceń.
‫Jeśli masz całą masę rzeczy w jednym dużym pliku
‫YAML i chcesz zastosować tylko niektóre części
‫tego pliku YAML.
‫Nie robię tego zbyt często, ale
‫w tym miejscu możesz to ograniczyć, stosując tylko zmiany
‫lub informacje, które umieściłeś w YAML dla
‫określonych etykiet.
‫Oczywiście ponownie w tym przypadku można zastosować
‫tę samą składnię. Możesz mieć tylko jedną etykietę.
‫Możesz wstawiać przecinki, mieć wiele etykiet i
‫wartości. To zależy od Ciebie.
‫Jest jeszcze jedna rzecz, którą robią etykiety, która jest
‫ważna dla działania Kubernetes.
‫Sprowadza się to do tego, że istnieją pewne zasoby, które rozmawiają
‫z innymi zasobami lub łączą się z nimi
‫lub są z nimi powiązane.
‫Jakkolwiek chcesz to powiedzieć. Dobrym przykładem
‫jest to, że usługi muszą wiedzieć, do których
‫strąków wysłać swój ruch. Możesz się zastanawiać, skąd to wie?
‫Mam na myśli to, że kiedy wpiszesz to polecenie i
‫wykonasz polecenie usługi kubectl i wskażesz na
‫wdrożenie, czego dokładnie używa do identyfikacji tego wdrożenia?
‫Cóż, w interfejsie CLI można by pomyśleć, że faktycznie wskazuje
‫on na obiekt wdrażania.
‫Ale tak naprawdę usługa musi rozmawiać z zasobnikami, a nie
‫z samym wdrożeniem.
‫Korzysta z czegoś zwanego selektorami etykiet.
‫Jest to powszechne w przypadku wielu różnych zasobów, które
‫mają wyższy poziom abstrakcji strąków.
‫Aby odnosić się do strąków lub wiedzieć, które strąki należą
‫do nich, używają selektorów etykiet. Zobaczysz to w
‫YAML w naszym repozytorium, z którego korzystałeś
‫przez kilka ostatnich wykładów.
‫Jeśli zajrzysz do aplikacji. Zauważysz, że przez cały
‫czas mieliśmy kilka rzeczy, o których
‫nie rozmawialiśmy. Pierwszy znajduje
‫się w górnej części usługi, mamy pod specyfikacją selektora.
‫To musi tam być.
‫Mówimy mu o kluczu i wartości etykiety
‫strąków, do których musi kierować ruch.
‫To tylko proste dopasowanie.
‫Z tym musi znaleźć strąki.
‫Następnie w dolnej części wdrożenia zobaczysz,
‫że nasza specyfikacja ma własny
‫selektor, matchLabels, aplikację, app-nginx.
‫To, co się dzieje, polega na tym, że oba te
‫obiekty wybierają strąki na podstawie tego dopasowania.
‫Oznacza to, że w szablonie pod naszą
‫specyfikacją, w którym tworzymy szablony, musimy mieć w
‫sobie tę etykietę, aby te zasoby mogły znaleźć
‫swoje kapsułki.
‫Zaletą jest to, że w późniejszych wersjach
‫Kubernetes jest to, że przynajmniej przy jednym wdrożeniu
‫muszą być zsynchronizowane. W rzeczywistości się nie
‫wdroży, jeśli zobaczy, że etykiety dopasowania selektora nie pasują
‫do etykiet metadanych szablonu, ponieważ muszą to zrobić,
‫aby nawet rozmieścić zasobniki i móc
‫je kontrolować.
‫Ma to na celu zapobiegnięcie przypadkowemu zrobieniu tego
‫w niewłaściwy sposób. Oczekuje, że będziesz
‫miał tam te kawałki. W starszych wersjach istniał sposób,
‫w jaki automatycznie je generował, domyślnie, aby można było
‫pominąć ten problem. Teraz przestali to robić i
‫zmuszają cię do umieszczenia tego tutaj. Myślę, że
‫to dobrze, zwłaszcza jak ważne są
‫te selektory etykiet. Technicznie rzecz biorąc, jeśli
‫wróciłeś do Swarm, Swarm robi trochę tego gotowego produktu, w
‫którym ma etykiety, które pasują do siebie od stosów do
‫usług, i stosy do ich objętości i tym podobne.
‫Tak naprawdę nie kontrolujemy tego i nie widzimy tego zbyt
‫wiele w interfejsie. W Swarm jest
‫to trochę zrobione w tle.
‫Ale to również bardzo ogranicza.
‫Nie możesz zmieniać rzeczy w locie.
‫Nie musisz koniecznie dostosowywać ich do naprawdę
‫wyjątkowych konfiguracji.
‫Tutaj moglibyśmy porozmawiać z serwisem o wielu
‫wdrożeniach, gdybyśmy chcieli zmienić
‫te selektory.
‫Selektory to nie tylko łączenie zasobów.
‫Chodzi również o kontrolowanie, dokąd idą.
‫W węzłach możesz używać etykiet i selektorów, aby
‫kontrolować, gdzie idą.
‫Możesz użyć jeszcze większej personalizacji z rzeczami zwanymi skażeniami
‫i tolerancją, które są odwrotnością tego, w
‫którym mówisz węzłom, że nie mogą robić pewnych rzeczy,
‫aby Kubernetes wiedział, gdzie właściwie kontrolować,
‫gdzie idą twoje strąki.
‫Te rzeczy stają się naprawdę niestandardowe
‫i bardzo zaawansowane. Wykonanie ich wszystkich razem może
‫stać się trochę owłosione i szalone.
‫Zdecydowanie zalecam, aby zabierać je ze sobą powoli.
‫Zachowaj to wszystko prosto po wyjęciu z pudełka.
‫Unikaj skażeń i tolerancji, dopóki naprawdę nie zajrzysz
‫w nie.
‫W porządku. Posprzątajmy całą tę sekcję.
‫Jeśli masz coś uruchomionego w domyślnej przestrzeni nazw dla
‫swojego klastra, jeśli po prostu wykonasz kubectl, dostaniesz
‫wszystko i zobaczysz rzeczy poza samym interfejsem API Kubernetes,
‫a następnie usuń wszystkie te zasoby, ponieważ będziemy dalej
‫. Nie będziemy ich potrzebować.