ClusterIP: Usługi są osiągalne przez pods / usługi w klastrze
Jeśli utworzę usługę o nazwie myservice w domyślnej przestrzeni nazw typu: ClusterIP, to zostanie utworzony następujący przewidywalny statyczny adres DNS dla usługi:
myservice.default.svc.cluster.local (lub po prostu myservice.default lub według pods w domyślnej przestrzeni nazw po prostu „myservice” będzie działać)
I tę nazwę DNS można rozwiązać tylko za pomocą zasobników i usług w klastrze.
NodePort: Usługi są dostępne dla klientów w tej samej sieci LAN / klientach, którzy mogą pingować węzły hosta K8s (i pods / usługi w klastrze) (uwaga dla bezpieczeństwa twoje węzły hosta K8s powinny znajdować się w prywatnej podsieci, dlatego klienci w Internecie wygrywają nie będzie w stanie uzyskać
dostępu do tej usługi) Jeśli wykonam usługę o nazwie mynodeportservice w przestrzeni nazw mynamespace typu: NodePort w 3-węzłowym klastrze Kubernetes. Następnie zostanie utworzona usługa typu: ClusterIP i będzie ona dostępna dla klientów w klastrze pod następującym przewidywalnym statycznym adresem DNS:
mynodeportservice.mynamespace.svc.cluster.local (lub po prostu mynodeportservice.mynamespace)
Dla każdego portu, który mynodeportservice nasłuchuje na porcie węzłowym w zakresie 30000 - 32767, zostanie losowo wybrany. Aby klienci zewnętrzni spoza klastra mogli trafić do usługi ClusterIP, która istnieje w klastrze. Powiedzmy, że nasze 3 węzły hosta K8 mają adresy IP 10.10.10.1, 10.10.10.2, 10.10.10.3, usługa Kubernetes nasłuchuje na porcie 80, a losowo wybrany Nodeport to 31852.
Klient, który istnieje poza klastrem, może odwiedzić 10.10.10.1:31852, 10.10.10.2:31852 lub 10.10.10.3:31852 (jak nasłuchuje NodePort przez każdy węzeł hosta Kubernetes) Kubeproxy przekaże żądanie do portu 80 mynodeportservice.
LoadBalancer: Usługi są dostępne dla wszystkich podłączonych do Internetu * (wspólna architektura to L4 LB jest publicznie dostępny w Internecie, umieszczając go w strefie DMZ lub nadając mu zarówno prywatny, jak i publiczny adres IP, a węzły hosta K8s są w prywatnej podsieci)
( Uwaga: jest to jedyny typ usługi, który nie działa w 100% implementacjach Kubernetes, takich jak Kubernetes od zera, działa, gdy Kubernetes ma integracje z dostawcą chmury.)
Jeśli wykonasz mylbservice, zostanie odrodzona maszyna wirtualna L4 LB (usługa IP klastra, a także usługa NodePort). Tym razem naszym węzłem NodePort jest 30222. Idea polega na tym, że L4 LB będzie miał publiczny adres IP 1.2.3.4 i załaduje równowagę i przekaże ruch do 3 węzłów hosta K8, które mają prywatne adresy IP. (10.10.10.1:30222, 10.10.10.2:30222, 10.10.10.3:30222), a następnie Kube Proxy prześle go do usługi typu ClusterIP, która istnieje wewnątrz klastra.
Zapytałeś również: Czy typ usługi NodePort nadal korzysta z ClusterIP? Tak *
Czy NodeIP faktycznie znajduje adres IP po uruchomieniu kubectl get nodes? Również Tak *
Narysujmy równolegle Podstawy:
Pojemnik znajduje się w kapsule. kapsuła znajduje się w replice. replika znajduje się we wdrożeniu.
Podobnie:
usługa ClusterIP jest częścią usługi NodePort. Usługa NodePort jest częścią usługi modułu równoważenia obciążenia.
Na pokazanym diagramie klient będzie kapsułą wewnątrz klastra.
externalIPs
zmienia się tutaj równanie? W szczególności można przypisaćexternalIPs
tablicę do usługiClusterIP
typu, a następnie usługa stanie się dostępna również na zewnętrznym adresie IP? Kiedy wybrałbyś to zamiast NodePort?