Sieć Kubernetes: kompletny przewodnik po modelu sieci
Opublikowany: 2020-02-18Zarządzanie kontenerami to istotny aspekt sieci. Przy dzisiejszych zmieniających się wymaganiach dotyczących ruchu, znaczenie Kubernetes wzrosło dziesięciokrotnie. A jeśli jesteś zainteresowany nauką o sieci, musisz najpierw zapoznać się z Kubernetes. Poznanie Kubernetes pomoże Ci efektywnie zarządzać kontenerami. Kubernetes jest również jednym z najlepszych narzędzi DevOps na rynku w 2020 roku.
Ale nie martw się, ponieważ w tym szczegółowym przewodniku będziemy omawiać to samo. Kubernetes to narzędzie do zarządzania kontenerami. W tym artykule dowiesz się, dlaczego jest używane, jakie są składniki sieci i jak kierują ruch.
Naucz się inżynierii oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Zanurzmy się.
Spis treści
Co to jest Kubernetes?
Zanim zaczniemy omawiać sieci w Kubernetes, musimy rozważyć podstawowe koncepcje tego narzędzia. W ten sposób nie napotkasz zamieszania w dalszej części artykułu i będziesz miał podstawową wiedzę na temat wszystkiego, o czym tutaj mowa.
Kubernetes to narzędzie do aranżacji kontenerów typu open source. Pomaga w zarządzaniu kontenerami, które w dzisiejszych czasach stały się najważniejszym aspektem sieci. Kubernetes posiada wiele funkcji, w tym skalowanie kontenerów, wdrażanie kontenerów, odskalowywanie kontenerów itp.

Podczas gdy Docker pomaga profesjonalistom w tworzeniu kontenerów, Kubernetes pomaga im w zarządzaniu nimi. Dlatego obaj są tak ważni. Kubernetes uruchamia system rozproszony w klastrze. Zrozumienie jego struktury i sieci pozwoli Ci uniknąć błędów i bezbłędnie zarządzać kontenerami.
Dlaczego używany jest Kubernetes?
W ciągu ostatnich kilku lat wymagania firm w zakresie kontenerów znacznie wzrosły. O ile nie są za małe, nie mogą polegać na jednym lub dwóch pojemnikach. Musieliby mieć duży zestaw kontenerów do równoważenia obciążenia. Wymaganie może wynosić setki, aby utrzymać wysoką dostępność i zrównoważyć ruch.
Gdy ruch wzrośnie, będą potrzebować więcej kontenerów do obsługi żądań. Podobnie, gdy ruch byłby mniejszy, będą musieli zmniejszyć kontenery. Zarządzanie kontenerami zgodnie z zapotrzebowaniem może być trudne, zwłaszcza jeśli robisz to ręcznie.
Ręczna orkiestracja kontenerów może zająć dużo czasu i zasobów, które z łatwością można by wydać gdzie indziej. Automatyzacja tego zadania znacznie upraszcza sprawę. Wtedy nie będziesz musiał się martwić o skalowanie i odkamienianie pojemników. To właśnie robi Kubernetes. Przeczytaj, jak tworzyć projekty DevOps dla początkujących z pomocą Kubernetes w naszym artykule o najlepszych projektach DevOps dla początkujących.
Automatyzuje orkiestrację i zarządzanie kontenerami. Jest bardzo popularny ze względu na swoją funkcjonalność. Jest to produkt Google, a jego wydajność znacznie pomaga organizacjom w automatyzacji skalowania kontenerów.
Składniki Kubernetes
Teraz, gdy już wiesz, czym jest Kubernetes i jakie są jego funkcje, możemy zacząć omawiać jego wiele komponentów. Sieć w tym narzędziu można zrozumieć dopiero po zapoznaniu się z jego różnymi częściami. Nie ma się jednak czym martwić. To dlatego, że jesteśmy tutaj, aby pomóc. Poniżej znajduje się krótki opis jego różnych elementów. Chociaż opis jest zwięzły, powinien wystarczyć, aby dać ogólne pojęcie.
Pody
Pamiętasz atomy w chemii, najmniejsze niezależne obiekty materii? Cóż, kapsuły są atomami Kubernetes. Jeden pod to obciążenie w klastrze. Może zawierać jeden lub wiele pojemników z magazynem. Każdy Pod ma unikalny adres IP, który działa jako jego tożsamość, gdy wchodzi w interakcję z innymi komponentami Kubernetes. Wszystkie pojemniki kapsuły są zaplanowane i umieszczone w tej samej maszynie.
Kontrolery
Kontrolery budują Kubernetes. Kontrolery obserwują stan serwera API, aby upewnić się, że jego aktualny stan jest zgodny z określonym stanem. Jeśli stan serwera API zmieni się z jakiegoś powodu, odpowiednio zareaguje. Kontrolery wykorzystują pętlę do sprawdzania stanów klastrów i porównywania ich z wymaganymi stanami. Może również wykonywać zadania zmiany stanu obecnego na stan niezbędny.
Węzły
Jeśli pody są atomami, węzły są kołami zębatymi Kubernetesa. Prowadzą klaster. Maszyny wirtualne są dostępnymi węzłami w klastrach Kubernetes. Wiele osób używa słowa „host” zamiast „węzeł”. W tym artykule spróbowaliśmy konsekwentnie używać terminu węzły.
Serwer API
Serwer API jest bramą do magazynu danych w Kubernetes. Pozwala określić żądany stan klastrów. Będziesz musiał wykonać wywołania API, jeśli chcesz zmienić stan klastra Kubernetes i opisać wymagany stan.
Ponieważ znasz składniki sieci Kubernetes, możemy zacząć od modelu sieci i sposobu jego działania.
Objaśnienie sieci Kubernetes
Sieć Kubernetes działa zgodnie z określonym modelem, który ma następujące ograniczenia:
- Pody komunikują się ze wszystkimi innymi podami bez translacji adresów sieciowych
- Nody mogą komunikować się z Podami bez translacji adresów sieciowych
- Adres IP poda, który widzą inne pody, jest tym samym adresem IP, który widzi dla siebie
Z powodu tych ograniczeń Kubernetes ma tylko kilka sekcji sieciowych. Oni są:
- Transfery kontenerów do kontenerów
- Transfery kapsuł do kapsuł
- Transfery poda do usługi
- Transfery internetowe do usług
Kontener do kontenera
Można by pomyśleć, że w sieci maszyna wirtualna wchodzi w bezpośrednią interakcję z urządzeniem ethernetowym, ale to nie wszystko.
Jeśli używasz Linuksa, sieć nazw zapewni ci stos sieciowy, który ma swoje urządzenia sieciowe, trasy i reguły zapory. Każdy uruchomiony proces w Linuksie komunikowałby się z tą przestrzenią nazw sieci.
Pod posiada grupę kontenerów w sieciowej przestrzeni nazw. Kontenery te mają tę samą przestrzeń portów i adres IP, który jest im przypisywany za pośrednictwem sieciowej przestrzeni nazw. Te kontenery znajdują się nawzajem za pośrednictwem hosta lokalnego, ponieważ znajdują się w tej samej przestrzeni nazw. Jeśli Twoje aplikacje znajdują się w kapsułce, mogą również uzyskać dostęp do udostępnionych woluminów.

Pod do Pod
Pody komunikują się ze sobą za pośrednictwem swoich adresów IP. Każdy pod ma prawdziwy i odrębny adres IP w Kubernetes. Wiesz już, czym są kapsuły, więc nie musimy dotykać tego tematu. Wiemy, że Kubernetes używa adresów IP, aby ułatwić komunikację między podami; porozmawiajmy, jak to się dzieje.
Pody komunikują się przez swoje węzły. Dlatego, aby zrozumieć komunikację między podami, musisz zrozumieć interakcję między węzłami.
- Komunikacja między węzłami
- Komunikacja wewnątrzwęzłowa
Omówimy szczegółowo każdy z nich:
Komunikacja między węzłami
Gdy węzły znajdują się w różnych kapsułach, będą komunikować się tą metodą. Możemy zrozumieć tę metodę komunikacji na prostym przykładzie. Załóżmy, że istnieją cztery różne sieci pod, a mianowicie pod 1, pod 2, pod 3 i tak dalej. Pody 1 i 2 znajdują się w sieci głównej węzła 1, a pody 3 i 4 znajdują się w drugiej sieci.
Musisz przesłać pakiet z pod 1 do pod 4.
Pakiet najpierw musi opuścić sieć pod 1 i przejść do sieci root przez veth0. Przechodzi przez most Linuksa, który pomaga mu w znalezieniu celu. Ponieważ węzeł nie ma celu w swoim Pod, jest odsyłany do interfejsu eth0. Teraz pozostawia pierwszy węzeł dla tabeli tras. Tablica tras kieruje pakiet do żądanego węzła, który znajduje się w pod4. Pakiet najpierw dociera do węzła 2, a następnie dociera do mostu, który kieruje go do miejsca przeznaczenia.
Komunikacja wewnątrzwęzłowa
Komunikacja Intra Node ma miejsce, gdy węzły znajdują się w tym samym podu. Możemy wyjaśnić komunikację między węzłami w ten sam sposób, w jaki wyjaśniliśmy komunikację między węzłami. W takich przypadkach pakiet podróżuje z pierwszego Poda w eth0. Przechodzi do sieci root przez veth0. Następnie musi przejść na most, po czym udaje się na wyznaczony adres IP.
W ten sposób pody komunikują się ze sobą w Kubernetes. Przejdźmy do następnej sekcji.
Pod do usługi
Widzieliście już w poprzedniej sekcji, jak ruch jest kierowany między adresami IP podów. Istnieje jednak problem z adresami IP. Adresy IP Poda mogą znikać i pojawiać się ponownie zgodnie ze skalowaniem kontenerów. Tak więc, jeśli kontenery są skalowane, liczba adresów IP podów wzrośnie i na odwrót.
Usługi pomagają w radzeniu sobie z tą sytuacją. Oto krótkie wyjaśnienie, jakie usługi są w Kubernetes, więc nie masz żadnych pomyłek.
Czym są usługi w Kubernetes?
Usługi w Kubernetes konfigurują serwery proxy, które muszą przesyłać żądania do grupy podów. Te zasobniki generują ruch, a selektor obsługuje to zadanie. Po utworzeniu usługi otrzymuje adres IP, który obsługuje jej żądania. Istnieje wiele rodzajów usług i musimy je omówić, zanim przejdziemy do Poda do komunikacji usługowej.
W Kubernetes istnieją 4 rodzaje usług. Oni są:
- IP klastra
- NodePort
- Load Balancer
- Nazwa zewnętrzna
ClusterIP to domyślny typ usługi. W tym typie usługa jest dostępna tylko w klastrze. W NodePort usługa jest wystawiona na adres IP każdego węzła. NodePort kieruje do usługi ClusterIP, gdy system utworzy ją wcześniej. W przeciwieństwie do ClusterIP, możesz skontaktować się z tą usługą poza klastrem.
LoadBalancer używa modułu równoważenia obciążenia chmury, aby udostępnić usługę sieciom zewnętrznym. Z tego powodu NodePort i ClusterIP są tworzone automatycznie, a usługa ExternalName przesyła je, ponieważ odzwierciedla rekord CNAME.
Teraz, gdy już wiesz, jakie są usługi i ile jest ich rodzajów, omówmy, jak odbywa się komunikacja między Podem a usługą.
Jak to działa?
W tym scenariuszu pakiet opuszcza Pod przez eth0. Przechodzi do mostu przez urządzenie Ethernet, skąd jest przesyłany do domyślnej trasy eth0. Jednak musi przejść przez iptables, zanim zostanie zaakceptowany w eth0. Iptables określają miejsce docelowe pakietu przy użyciu określonych reguł i wysyła pakiet do wymaganego Poda. Gdy to zrobi, pakiet trafia do prawdziwego adresu IP kapsuły zamiast wirtualnego adresu IP usługi.
Zewnętrzny do usługi
Poprzednie trzy metody routingu ruchu dotyczyły tylko Kubernetes. Ale w rzeczywistych przypadkach istnieje duże prawdopodobieństwo, że będziesz musiał połączyć swoją sieć Kubernetes z siecią innej firmy w celu routingu ruchu. I ta sekcja jest mniej więcej taka sama.
Po połączeniu z siecią zewnętrzną Kubernetes może pełnić dwie funkcje:
- Kieruj ruch z internetu do jego sieci
- Kieruj ruch ze swojej sieci do internetu
Pierwsza z nich wymaga sieci Ingress, a druga wymaga sieci Egress. Przyjrzyjmy się im.
Ingres
Kierowanie ruchu z sieci publicznej do systemu Kubernetes jest bardzo trudne. Wymaga LoadBalancera i kontrolera do obsługi pakietów. Oto przykład, jak to działa.
Najpierw wdrożysz usługę, a dostawca chmury utworzy nowy system równoważenia obciążenia. Moduł równoważenia obciążenia rozprowadzi ruch na maszynach wirtualnych w klastrze przy użyciu wyznaczonego portu usługi. Tutaj iptables przenoszą ruch z systemu równoważenia obciążenia do wymaganego poda. Pod odpowie klientowi swoim adresem IP, a conntrack pomoże w przepisaniu adresów IP we właściwy sposób.
Systemy równoważenia obciążenia warstwy 7 obecne w sieci są w stanie segmentować ruch przychodzący według adresów URL i ścieżek. Jest to bardzo przydatne podczas pracy z siecią Ingress.
Wyjście
Kiedy kierujesz ruch z węzła sieci Kubernetes do Internetu, zależy to w dużej mierze od konfiguracji sieci, jak wszystko będzie działać. Omówimy tutaj ogólny przykład, aby dotknąć tematu.
Pakiet zaczyna się od przestrzeni nazw Poda i przechodzi do głównej przestrzeni nazw poprzez veth. Następnie trafia do mostu, skąd trafia do usługi domyślnej, ponieważ adres IP, do którego musi się udać, nie jest połączony z mostem. Przechodzi przez iptables podczas przechodzenia do głównej przestrzeni nazw.

Przeczytaj: Warunek wstępny dla DevOps: to nie jest to, o czym myślisz
Teraz bramy internetowe akceptują tylko adresy IP, które są połączone z maszynami wirtualnymi. A pod źródłowy naszej kieszeni nie jest połączony z maszyną wirtualną. Tak więc iptables wykonują źródłowy NAT i zmieniają źródło pakietu. Teraz dociera do bramki internetowej, gdzie przechodzi przez inny NAT, a następnie wchodzi do publicznego Internetu (miejsca docelowego).
I to jest to. Teraz wiesz już wszystko o sieciach Kubernetes i jej różnych komponentach.
Wniosek
Kubernetes to bez wątpienia jedno z podstawowych narzędzi, których powinieneś się nauczyć, jeśli interesujesz się networkingiem. Ci, którzy nie są zaznajomieni z tą dziedziną, nie wiedzieliby, jak ważne jest. Zarządzanie kontenerami i trasowanie ruchu zgodnie z tymi wymaganiami może znacznie pomóc. Staraliśmy się, aby ten przewodnik był jak najbardziej przejrzysty, aby pomóc Ci wszystko zrozumieć.
Jeśli chcesz nauczyć się i opanować Kubernetes, DevOps i nie tylko, zapoznaj się z programem Executive PG Program IIIT-B i upGrad w tworzeniu oprogramowania - specjalizacja w tworzeniu pełnego stosu.