Pojęcia dotyczące sieci dla kontenerów Kubernetes
Kubernetes to przenośna, rozszerzalna platforma typu open source umożliwiająca automatyzację wdrażania, skalowania i zarządzania konteneryzowanymi obciążeniami. Jako platforma orkiestracji platforma Kubernetes zapewnia łatwość użycia i elastyczność, na przykład platformę jako usługę (PaaS) i oferty infrastruktury jako usługi (IaaS).
Ważne
Aby skonfigurować sieć Kubernetes, musisz zrozumieć pojęcia, takie jak sieci wirtualne, moduły równoważenia obciążenia i odwrotne serwery proxy.
Klastry i węzły
Platforma Kubernetes jest oparta na klastrach. Zamiast mieć jedną maszynę wirtualną, używa ona kilku maszyn wirtualnych nazywanych węzłami, które współpracują ze sobą jako jedna. Platforma Kubernetes używa architektury klastra składającej się z węzła podstawowego i co najmniej jednego węzła roboczego. Węzeł podstawowy uruchamia składniki płaszczyzny sterowania, takie jak serwer interfejsu API, harmonogram i menedżer kontrolera. Węzły robocze uruchamiają składniki płaszczyzny danych, takie jak kubelet, kube-proxy i środowisko uruchomieniowe kontenera.
Składnik kube-proxy jest odpowiedzialny za lokalną sieć klastrów i działa w każdym węźle. Gwarantuje on, że każdy węzeł ma unikatowy adres IP. Implementuje również reguły do obsługi routingu i równoważenia obciążenia ruchu przy użyciu tabel adresów IP i serwera wirtualnego IP. Składnik ten nie udostępnia usług DNS. Zalecany jest dodatek DNS do klastra oparty na serwerze CoreDNS — jest on instalowany domyślnie.
Zasobniki
Zasobnik Kubernetes grupuje kontenery i aplikacje w strukturę logiczną. Te zasobniki nie mają funkcji inteligentnych i składają się z co najmniej jednego kontenera aplikacji. Każdy z nich ma adres IP, reguły sieci i uwidocznione porty.
Wdrożenie na platformie Kubernetes jest ewolucją zasobników. Wdrożenie opakowuje zasobniki w inteligentny obiekt, który umożliwia skalowanie w poziomie. Możesz łatwo zduplikować i skalować aplikację w celu obsługi większego obciążenia bez konieczności konfigurowania złożonych reguł sieciowych.
Zasoby warstwy abstrakcji
Aby zezwolić na dostęp do aplikacji lub między składnikami aplikacji, platforma Kubernetes udostępnia warstwę abstrakcji sieci wirtualnej. Węzły kubernetes łączą się z siecią wirtualną, która zapewnia łączność przychodzącą i wychodzącą dla zasobników. Składnik kube-proxy jest uruchamiany w każdym węźle, aby zapewnić te funkcje sieciowe.
Na platformie Kubernetes:
- Usługi logicznie grupować zasobniki, aby umożliwić bezpośredni dostęp do określonego portu za pośrednictwem adresu IP lub nazwy DNS.
- ServiceTypes umożliwiają określenie, jakiego rodzaju usługi chcesz użyć.
- Ruch można dystrybuować przy użyciu modułu równoważenia obciążenia.
- Routing ruchu aplikacji warstwy 7 można również osiągnąć za pomocą kontrolerów ruchu przychodzącego.
- Możesz kontrolować ruch wychodzący (wychodzący) dla węzłów klastra.
- Zabezpieczenia i filtrowanie ruchu sieciowego dla zasobników jest możliwe za pomocą zasad sieciowych.
Sieci na platformie Kubernetes
Platforma Kubernetes ma określone wymagania dotyczące sposobu implementowania sieci dla klastra. Wybrane opcje konfiguracji mają wpływ na sposób uwidaczniania aplikacji w sieci klastra i sposobu przechowywania danych. W celu uproszczenia komunikacji platforma Kubernetes oczekuje, że skonfigurujesz sieć w taki sposób, aby:
- zasobniki mogły komunikować się między węzłami bez translatora adresów sieciowych (NAT),
- Węzły i zasobniki mogą komunikować się ze sobą bez translatora adresów sieciowych.
- agenci w węźle mogli komunikować się ze wszystkimi węzłami i zasobnikami.
Konfiguracja kontenera i zawarte w nim dane nie są trwałe między wykonaniami. Wraz z kontenerem usuwane są wszystkie informacje, o ile nie zostanie on skonfigurowany do korzystania z woluminu. Dotyczy to też konfiguracji sieci kontenera i przypisanych do niego adresów IP.
Wdrożenie jest logiczną grupą zasobników. Nie jest ono traktowane jako obciążenie fizyczne oraz nie ma przypisanego adresu IP. Każdy zasobnik jest automatycznie przypisywany adres IP, który zostanie utracony po zniszczeniu zasobnika. To zachowanie powoduje, że strategia ręcznej konfiguracji sieci jest złożona.
Opcje sieci platformy Kubernetes dla kontenerów systemu Windows
Podczas wdrażania platformy Kubernetes z kontenerami systemu Windows dostępne są dwie opcje sieciowe: usługi i kontrolery ruchu przychodzącego. Aby użyć tych opcji, system Windows zależy od wtyczek interfejsu sieciowego kontenera (CNI).
Platforma Kubernetes używa usług do logicznego grupowania zestawu zasobników i zapewniania łączności z siecią. Upraszcza to konfigurację sieci na potrzeby obciążeń aplikacji. Usługa działa jako punkt wejścia dla grupy zasobników i zapewnia statyczny adres IP. Ruch dociera do usługi dla grupy i jest dystrybuowany we wzorcu działania okrężnego do zasobników. Gdy adresy IP zasobników zmieniają się wraz z upływem czasu, usługa śledzi zmiany w celu zapewnienia prawidłowego przepływu ruchu sieciowego do zasobników.
Konteneryzowane aplikacje uruchamiane na platformie Kubernetes muszą wysyłać i odbierać dane przez Internet. Platforma Kubernetes obsługuje tę komunikację za pośrednictwem składników ruchu przychodzącego i wychodzącego. Kontroler ruchu przychodzącego określa, który ruch i źródła mogą łączyć się z usługami. Kontroler ruchu wychodzącego umożliwia łączenie aplikacji z jednostkami zewnętrznymi za pośrednictwem bramy internetowej.
Wtyczki CNI umożliwiają platformie Kubernetes używanie różnych interfejsów sieciowych dla sieci kontenerów. Wtyczki łączą zasobniki z siecią i przydzielają adresy IP zasobnika. Wchodzą w interakcje z usługą sieciową hosta systemu Windows (HNS) i usługą obliczeniową hosta (HCS), aby tworzyć zasoby sieciowe dla kontenerów systemu Windows i zarządzać nimi. Niektóre przykłady wtyczek to Calico, Flannel i Azure CNI.
Kubernetes ServiceTypes
Aby skonfigurować żądaną usługę, możesz określić jeden z następujących typów usługi Kubernetes ServiceTypes:
- KlasterIP tworzy wewnętrzny adres IP do użycia w klastrze. Ta usługa jest dobra dla aplikacji tylko wewnętrznych, które obsługują inne obciążenia w klastrze. Jest to wartość domyślna używana, jeśli nie określisz jawnie typu usługi.
- NodePort tworzy mapowanie portów w węźle bazowym, które umożliwia dostęp do aplikacji bezpośrednio przy użyciu adresu IP węzła i portu.
- Usługa LoadBalancer tworzy zasób modułu równoważenia obciążenia, konfiguruje zewnętrzny adres IP i łączy żądane zasobniki z pulą zaplecza modułu równoważenia obciążenia. Aby zezwolić klientom na dostęp do aplikacji, reguły równoważenia obciążenia są tworzone na żądanych portach.
W przypadku równoważenia obciążenia HTTP/S ruchu przychodzącego kolejną opcją jest użycie kontrolera ruchu przychodzącego.
- ExternalName tworzy określony wpis DNS, aby ułatwić dostęp do aplikacji.
Ruch przychodzący Kubernetes
Składnik ruchu przychodzącego Kubernetes uwidacznia trasy dla ruchu HTTP i HTTPS spoza klastra do usług wewnątrz klastra. Trasy ruchu przychodzącego definiuje się przy użyciu reguł ruchu przychodzącego. Klaster Kubernetes odrzuca cały ruch przychodzący bez zdefiniowanych tras.
Kontroler ruchu przychodzącego
Kontroler ruchu przychodzącego to oprogramowanie, które zapewnia konfigurowalny routing ruchu dla usług Kubernetes. Zasoby ruchu przychodzącego usług Kubernetes są używane do skonfigurowania zasad ruchu przychodzącego oraz tras dla poszczególnych usług Kubernetes. Za pomocą kontrolera ruchu przychodzącego i reguł ruchu przychodzącego można użyć jednego adresu IP do kierowania ruchu do wielu usług w klastrze Kubernetes. Po wdrożeniu kontrolera w środowisku można utworzyć i wdrożyć manifest ruchu przychodzącego. Platforma Kubernetes używa kontrolerów ruchu przychodzącego do zarządzania konfiguracją ruchu przychodzącego w klastrze i udostępnia kilka funkcji.
Reguły ruchu przychodzącego
Reguły ruchu przychodzącego określają miejsce, z którego pochodzi ruch, i miejsce, do którego należy skierować go w klastrze. Reguły ruchu przychodzącego definiuje się w pliku manifestu wdrożenia ruchu przychodzącego. Te reguły są definiowane w kluczu reguł pliku manifestu. Każda reguła jest zestawem wartości opisujących regułę.
Adnotacje ruchu przychodzącego
Adnotacja umożliwia dołączanie niezidentyfikowanych metadanych, takich jak konfiguracje ruchu przychodzącego, dla obciążeń. Adnotację można traktować jako wewnętrzną etykietę, która definiuje konkretne konfiguracje zasobów. Na przykład możesz użyć konkretnego kontrolera ruchu przychodzącego, który obsługuje ponowne zapisywanie nazw lub ograniczanie ładunku.
Zasady sieciowe
Platforma Kubernetes udostępnia funkcję zasad sieciowych do kontrolowania przepływu ruchu między zasobnikami. Możesz zezwalać na ruch lub blokować go na podstawie ustawień przypisanych etykiet, przestrzeni nazw i portu ruchu. Zasady sieci oferują podejście natywne dla chmury, które idealnie nadaje się do kontrolowania ruchu między zasobnikami Kubernetes.