‫W porządku.
‫Bez względu na to, gdzie używasz swojego Dockera, możemy faktycznie utworzyć roota z jednym węzłem do własnych
‫celów testowych.
‫Sposób, w jaki mogę stwierdzić, czy Swarm jest włączony, czy nie, mogę po prostu zrobić informacje w doku, a zauważysz, że Swarm
‫jest nieaktywny.
‫Wiemy, że Swarm nie został tu włączony. Domyślnie Docker nie włącza żadnej
‫z funkcji Swarm.
‫Mogę uruchomić inicjację docker roja w celu zainicjowania. Trwało to około pół sekundy i skończyliśmy.
‫To, co mamy teraz, to rój z jednego węzła, z wszystkimi funkcjami i funkcjonalnościami, które dostajemy
‫z pudełka.
‫To było prawdopodobnie najkrótsze demo tego całego kursu.
‫To znaczy, co się właśnie stało? Wprowadziliśmy jedno polecenie i magię. W rzeczywistości nie była to żadna magia.
‫Było wiele bardzo szybkich i wydajnych rzeczy w programowaniu Go z Dockerem, ale w zasadzie, zaraz po
‫wyjęciu
‫z pudełka, robi mnóstwo PKI i zabezpieczeń. Tworzy certyfikat główny dla roju, którego użyje do
‫ustanowienia zaufania i podpisania certyfikatów dla wszystkich węzłów i wszystkich menedżerów. Utworzy specjalny certyfikat dla tego
‫pierwszego węzła menedżera, ponieważ jest to menedżer kontra pracownik.
‫Następnie tworzy te tokeny, których możemy użyć na innych węzłach, aby dołączyć do tego roju.
‫Następnie kilka innych rzeczy w tle, w których umożliwia on API roju i tworzy coś, co nazywa
‫się bazą danych konsensusu Raft, o czym opowiem później w części produkcyjnej kursu.
‫Tak, jak wiesz, Raft to protokół, który w rzeczywistości zapewnia spójność w wielu węzłach i jest idealny do
‫używania w chmurze, gdzie nie możemy zagwarantować, że jakakolwiek rzecz będzie dostępna w
‫każdej chwili.
‫Tworzy tę bazę danych na dysku. Przechowuje konfigurację roju i
‫tego pierwszego menedżera, i faktycznie go szyfruje.
‫Zakładając, że jesteś w wersji 1. 13 lub nowszy. Następnie zaczeka na inne
‫węzły przed rozpoczęciem replikacji bazy danych.
‫Ponownie, cały ten ruch, który wykonywałby po utworzeniu innych węzłów, będzie zaszyfrowany.
‫Jednym z kluczowych składników Roju, który wyróżnił go po raz pierwszy,
‫było to, że nie potrzebowaliśmy dodatkowego systemu przechowywania wartości klucza ani architektury bazy danych, aby
‫zarządzać konfiguracją naszego roju.
‫Jeśli pracujesz w branży od lat lub nawet przez dziesięciolecia, jest to typowa konfiguracja
‫db, która jest tym oddzielnym systemem baz danych, który zwykle potrzebujesz, aby zachować wszystkie zbędne informacje
‫o twoim systemie orkiestracji i automatyzacji. Swarm faktycznie zbudował to wprost
‫w Dockerze wprost na demona i obsługuje je dla nas.
‫Nigdy tak naprawdę nie musimy nic robić. Nie musisz się martwić hasłami. Nie ma specjalnych usług do
‫uruchomienia lub czegoś w tym stylu.
‫Wróć do linii poleceń.
‫Zauważysz tutaj, że mówi o ... jeśli chcę dodać pracownika do
‫roju, po prostu trzeba go wyciąć i wkleić na inne serwery, które dodaję.
‫Później będziemy budować rój z wieloma węzłami, ale na razie zatrzymamy
‫to w jednym węźle. Rzućmy okiem na kilka poleceń, które się z tego wydostaną.
‫Pierwszą rzeczą jest to, że możemy wykonać węzeł dokowania ls. W takim przypadku widzimy tylko jeden węzeł menedżera, który
‫utworzyliśmy.
‫Zauważysz, że jest to oznaczone jako lider, i może być tylko jeden lider na raz wśród wszystkich menedżerów.
‫Ponownie, skoro mamy tylko jeden, to oczywiście jest to lider. Możemy przyjrzeć się pomocy,
‫zobacz, jakie mamy tu inne opcje. Naprawdę, komendy węzłów używane do wprowadzania serwerów do i
‫z roju, lub promowania ich od pracowników do menedżerów, lub degradacji ich od menedżerów z powrotem do pracowników.
‫Jeśli cofniesz komendę dokowania dla dockerów, zauważymy, że w rzeczywistości jest to bardzo wąski zakres
‫do polecenia.
‫Naprawdę jest po prostu zainicjować, albo dołączyć, albo odejść.
‫Nowe polecenie odblokowania, o którym możemy porozmawiać w późniejszym wykładzie.
‫Na razie skupmy się na ekscytującym nowym poleceniu usługi Docker.
‫Ponownie, obsługa w roju zastępuje bieg Dockera.
‫Nie wiem na pewno, ale naprawdę myślę, że skupiło się to wokół
‫idei, że nie chcemy przełamać istniejącej funkcjonalności Dockera, ale Docker zawsze był budowany od podstaw jako
‫pojedyncze rozwiązanie hosta.
‫Cały pomysł polegał na skupieniu się na lokalnych pojemnikach w systemie, z którym rozmawia. Podczas gdy zaczynamy mówić
‫o klastrze, nie przejmujemy się zbytnio pojedynczymi węzłami.
‫Właściwie nie możemy ich nazywać. Traktujemy ich jak bydło, jeśli słyszeliście o
‫zwierzętach w porównaniu z bydłem, w których to tylko liczba.
‫Tak naprawdę nie podchodzimy indywidualnie do każdego węzła i nie uruchamiamy pojedynczego kontenera.
‫Naprawdę po prostu rzucamy wymagania w roju w formie usług, a następnie organizujemy, w jaki sposób musi to wszystko ułożyć,
‫na których węzłach muszą być, a my po prostu wiemy,
‫że ma nas w tyle. tworzenie usługi dokowania to
‫sposób, w jaki wydajemy nowe zamówienia. Zróbmy coś naprawdę prostego.
‫Po prostu uruchommy obraz Alpine. Wtedy będziemy mieć obraz alpejski za pomocą polecenia ping,
‫aby trafić 8. 8. 8. 8, który jest w rzeczywistości serwerem DNS Google, ale my
‫naprawdę chcemy dać mu coś do zrobienia, podczas gdy sprawdzamy, co się dzieje.
‫Wtedy zobaczysz jak uruchamianie dokera, przesyła identyfikator, ale to nie jest identyfikator kontenera. To w rzeczywistości identyfikator
‫usługi.
‫Zobaczysz, że mamy teraz jedną usługę wymienioną. Podobnie jak z poleceniem uruchomienia dockera, ponieważ
‫nie
‫nazwaliśmy go, nadało mu losową nazwę. Widzimy, że w rzeczywistości jest już odwirowany.
‫Jeden z nich. Gdy patrzysz na usługi, zawsze zobaczysz ten
‫numer z / w środku. To reprezentuje ten po lewej, ile faktycznie działa.
‫A ten po prawej to liczba, którą określiłeś do uruchomienia.
‫Celem orkiestratora jest sprawienie, aby te liczby były zgodne, cokolwiek to będzie miało znaczenie.
‫Ale to znowu nie pokazuje nam prawdziwego kontenera.
‫To naprawdę pokazuje nam listę naszych usług, abyśmy mogli nieco dalej pracować.
‫Wykonujemy usługę dokowania ps, a następnie podajemy jej nazwę lub identyfikator usługi, która faktycznie pokazuje nam
‫zadania lub kontenery dla tej usługi. Zobaczysz, że jest podobny do polecenia ls kontenera, ale faktycznie
‫ma teraz ten komponent węzła, ponieważ gdy mamy do czynienia z scenariuszami z wieloma serwerami, możemy
‫potrzebować wiedzieć, na którym serwerze faktycznie działa. Zauważysz, że faktycznie
‫nadała mu nazwę przyrostu nazwy usługi.
‫Jeśli wróciliśmy do polecenia docker container ls, to nadal działa.
‫W tym przypadku orkiestracja gry Swarm polega na dodaniu informacji do nazw i rzeczywistych
‫obrazów, które są uruchomione. Omówimy także niektóre z tych subtelnych różnic później.
‫Póki co, skorzystajmy z tej usługi i pomnóżmy ją. W tym celu używamy aktualizacji usługi docker, a następnie
‫nazwy naszej usługi lub identyfikatora w tym przypadku, zrobię ID. Chcę zmienić atrybut dotyczący
‫usługi.
‫W tym przypadku chcę zmienić liczbę replik.
‫Jeśli więc ponownie wykonamy usługę dokowania, zobaczymy trzy z trzech. Jeśli wykonamy usługę dokowania ps, obecnie
‫widzimy trzy zadania. Zauważysz, że dwie zostały właśnie utworzone kilka sekund temu.
‫Gdybyśmy byli wystarczająco szybcy i gdybyśmy rozmieszczali coś wystarczająco dużego, moglibyśmy uruchomić usługę ls i
‫zobaczyć, że pokazuje nam zero. Jeden z trzech.
‫Będzie rosnąć, gdy wszystko się zacznie. Tak się składa, że Alpine był już na tej maszynie,
‫jeśli chodzi o jej obraz, a uruchomienie polecenia ping nie zajęło zbyt wiele czasu.
‫Po prostu nie mogliśmy być tacy szybcy.
‫Interesujące w tym poleceniu aktualizacji jest to, że możesz sobie wyobrazić różnicę między poleceniem
‫uruchomienia Docker, które możesz użyć na pojedynczym serwerze testowym lub serwerze testowym lub na komputerze lokalnym,
‫a problemami związanymi z produkcją polegającymi na utrzymywaniu
‫jak największej dostępności.
‫To jeden z celów projektu Swarm. To polecenie, którego jeszcze
‫nie używaliśmy, to polecenie aktualizacji Docker. To było polecenie dla Dockera, który uruchamiał kontenery, co
‫pozwalało nam aktualizować niektóre zmienne w naszym działającym kontenerze bez konieczności jego zabijania i restartowania.
‫Niemal wszystkie te opcje są związane z ograniczaniem i kontrolowaniem użycia zasobów dla tego kontenera.
‫Ponieważ jest to jedna z typowych rzeczy, które widzisz, gdy korzystasz z aplikacji
‫długoterminowej, musisz zmienić jej zasoby, być może dlatego, że bazy danych stały się większe i wymagają więcej pamięci RAM.
‫A może masz proces kontroli, który pochłania zbyt dużo procesora i musisz go ograniczyć.
‫Jeśli zrobimy pomoc dotyczącą polecenia aktualizacji usługi docker, zobaczysz, że mamy o wiele więcej opcji.
‫Ponieważ celem usługi Swarm jest to, że jest ona w stanie zastąpić kontenery i zaktualizować zmiany
‫w usłudze bez zabrania całej rzeczy.
‫Gdybyś miał serwis z trzema pojemnikami, możesz technicznie zdjąć po jednym na raz, aby dokonać zmiany i zrobić coś w rodzaju
‫aktualizacji, która jest niebiesko-zielonym wzorem, o którym mówiliśmy. Dlatego widzimy o wiele więcej opcji,
‫ponieważ możemy zmienić te opcje, które mogą wymagać ponownego uruchomienia kontenera, ale
‫rój inteligentnie upewni się, że sposób, w jaki je aktualizujemy, jest zgodny ze wzorcem,
‫który zapewnia stałą dostępność.
‫Wracamy więc do naszej listy kontenerów doków. Naprawdę szybko. Zauważysz, że mamy te trzy teraz, a co
‫jeśli wejdę do środka i, w pewnym sensie, jako łotr, zrobiłem kontener dokowy, a ja wskazałem jeden z tych
‫kontenerów, i zmusiłem go ... załóżmy, że pokonałem pierwszą i po prostu ją usunąłem.
‫W porządku.
‫Teraz robię usługę dokowania ls i widzisz, jak pokazuje ona dwie z trzech?
‫Ponieważ wszedłem za plecami Swarm i faktycznie zabrałem działający pojemnik, to go
‫zidentyfikuje i w ciągu kilku sekund uruchomi nowy, aby zastąpić ten, który
‫spadł.
‫Więc jeśli zrobiłem ps na mroźny, zobaczysz, że faktycznie pokazuje historię pierwszego zadania tutaj na liście jest to,
‫że nie powiodło się i zaczęło nowy 24 sekundy temu.
‫Jednym z obowiązków systemu orkiestracji kontenera jest upewnienie się, że określone usługi są zawsze
‫uruchomione, a jeśli się nie powiedzie, odzyskuje
‫się z tego błędu. Które jest inne niż uruchamianie dockera, prawda? procedura dokowania
‫nigdy nie odtwarzałaby kontenera.
‫Dlatego właśnie za każdym razem, gdy wykonujemy dowolne z tych poleceń usługi Docker, nie mówimy
‫bezpośrednio do akcji takiej jak tworzenie kontenera.
‫Właściwie mówimy systemowi orkiestracji, hej, włóż to zadanie do swojej kolejki.
‫Kiedy będziesz w stanie to zrobić, wykonaj akcje na rój, o które tutaj prosiłem. To duża różnica.
‫Jest subtelny w linii poleceń, ale to duża różnica, ponieważ oznacza to możliwość wycofania.
‫W tym celu zastosowano mechanizm łagodzenia niepowodzeń i wiele inteligencji.
‫W tym przypadku, jeśli rzeczywiście chciałbym usunąć wszystkie
‫te pojemniki, musiałbym usunąć usługę. Musiałbym wykonać rm usługi dokowania.
‫A potem mroźny.
‫Jeśli wykonamy usługę dokowania ls, nic nie zobaczymy. Jeśli wykonamy kontener
‫dokera ls, zobaczymy trzy pojemniki.
‫Aha i już idziemy.
‫To pokazuje, że automatyzacja dzieje się na zapleczu.
‫Udało nam się szybko pokazać, że usunęliśmy usługę, ale system orkiestracji nie przeszedł wszystkich
‫procesów oczyszczania usługi i zadania za nią stojącego. Pojęcia te powinny być dość łatwe do zrozumienia,
‫ponieważ po prostu rozszerzają się na koncepcje Docker, które mieliśmy wcześniej w
‫tym kursie.
‫Następnie skonstruujmy rój w wielu węzłach i zacznijmy skalować nasze pojemniki.