Typy Service: ClusterIP, NodePort, LoadBalancer
Poznaj różne sposoby udostępniania usług wewnątrz klastra Kubernetes i poza nim.
Typy Service: ClusterIP, NodePort, LoadBalancer to bezpłatna lekcja Kubernetes Basics na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kubernetes Basics, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.
Wymagania dotyczące udostępniania usług
W Kubernetes Pody są efemeryczne i mają dynamiczne adresy IP. Usługi zapewniają aplikacjom stabilny dostęp sieciowy. Jak jednak je udostępnić?
W zależności od tego, czy aplikacja ma być dostępna wewnątrz klastra, czy spoza niego, oraz w jaki sposób ma się to odbywać, Kubernetes oferuje różne typy usług. Przyjrzyjmy się trzem najważniejszym!
ClusterIP: dostęp wewnętrzny
ClusterIP to domyślny typ usługi. Nadaje usłudze stabilny wewnętrzny adres IP, dostępny wyłącznie z wnętrza klastra Kubernetes.
- Pody mogą docierać do innych Podów za pomocą tych adresów ClusterIP i nazwy usługi.
- To idealne rozwiązanie dla usług backendowych, które nie wymagają bezpośredniego udostępnienia na zewnątrz.
- Można traktować je jak wewnętrzny load balancer dla Podów.
YAML usługi ClusterIP
Oto sposób definiowania usługi typu ClusterIP. Zwróć uwagę na pole type: ClusterIP, choć jest ono opcjonalne, ponieważ to typ domyślny.
apiVersion: v1
kind: Service
metadata:
name: my-internal-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIPUzyskiwanie dostępu do usług ClusterIP
Po wdrożeniu Kubernetes automatycznie przypisuje tej usłudze unikalny wewnętrzny adres IP (ClusterIP). Inne Pody mogą następnie używać nazwy usługi (np. my-internal-service) lub jej adresu IP, aby się z nią połączyć.
Usługa DNS Kubernetes tłumaczy nazwę usługi na jej adres ClusterIP, dzięki czemu komunikacja wewnętrzna jest łatwa i niezawodna.
NodePort: dostęp zewnętrzny
Co zrobić, jeśli aplikacja musi być dostępna spoza klastra? Właśnie do tego służy NodePort.
Usługa NodePort udostępnia aplikację na stałym porcie pod adresem IP każdego węzła w klastrze. Każdy ruch wysłany do NodeIP:NodePort jest kierowany do usługi.
- Przydatne rozwiązanie na etapie tworzenia aplikacji i w małych wdrożeniach.
- NodePort zwykle mieści się w zakresie 30000–32767.
YAML usługi NodePort
Aby utworzyć usługę NodePort, należy jawnie ustawić type: NodePort. Jeśli nie określisz portu, Kubernetes automatycznie wybierze dostępny port z zakresu NodePort.
apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30080 # Optional: K8s picks if omitted
type: NodePortŁączenie za pomocą NodePort
Po wdrożeniu usługi NodePort możesz uzyskać dostęp do aplikacji spoza klastra, używając adresu <AnyNodeIP>:<NodePort>.
Jeśli na przykład adres IP węzła to 192.168.1.100, a przypisany NodePort to 30080, aplikacja będzie dostępna pod adresem http://192.168.1.100:30080.
LoadBalancer: integracja z chmurą
W środowiskach produkcyjnych u dostawców chmurowych (AWS, GCP, Azure) często preferowany jest typ usługi LoadBalancer. Automatycznie tworzy on zewnętrzny chmurowy load balancer.
Ten load balancer otrzymuje publiczny adres IP i rozdziela ruch zewnętrzny między Pody usługi. Cała złożona logika routingu jest obsługiwana automatycznie.
YAML usługi LoadBalancer
Zdefiniowanie usługi LoadBalancer jest proste. Dostawca chmurowy zajmuje się utworzeniem zewnętrznego load balancera.
apiVersion: v1
kind: Service
metadata:
name: my-loadbalancer-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancerDostęp zewnętrzny za pomocą LoadBalancer
Po wdrożeniu dostawca chmurowy utworzy dedykowany load balancer i przypisze mu zewnętrzny adres IP lub nazwę hosta. Następnie możesz użyć tego publicznego punktu końcowego, aby uzyskać dostęp do aplikacji.
Zapewnia to solidny, skalowalny i wysoce dostępny sposób udostępniania usług w internecie.
Szybkie sprawdzenie: typy usług
Które typy usług Kubernetes umożliwiają bezpośredni dostęp zewnętrzny do aplikacji spoza klastra?
Podsumowanie: wybór usługi
Poznałeś trzy główne typy usług Kubernetes:
- ClusterIP: Dostęp wyłącznie wewnątrz klastra.
- NodePort: Udostępnia usługi na stałym porcie pod adresem IP każdego węzła, umożliwiając dostęp zewnętrzny.
- LoadBalancer: Integruje się z dostawcami chmurowymi, aby utworzyć zewnętrzny load balancer z publicznym adresem IP.
Wybierz właściwy typ na podstawie wymagań aplikacji dotyczących udostępniania oraz środowiska wdrożeniowego!
Często zadawane pytania
Czy lekcja „Typy Service: ClusterIP, NodePort, LoadBalancer” jest bezpłatna?
Tak — pełny tekst „Typy Service: ClusterIP, NodePort, LoadBalancer” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kubernetes Basics, przejdź na CoddyKit PRO. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.
Co nauczysz się w „Typy Service: ClusterIP, NodePort, LoadBalancer”?
Poznaj różne sposoby udostępniania usług wewnątrz klastra Kubernetes i poza nim. Ćwiczysz Kubernetes Basics z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kubernetes Basics?
Nie wymagamy żadnego doświadczenia. Kubernetes Basics w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Typy Service: ClusterIP, NodePort, LoadBalancer”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kubernetes Basics?
Tak. Każda lekcja Kubernetes Basics zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Udostępnianie aplikacji za pomocą Services
- Typy Service: ClusterIP, NodePort, LoadBalancer
- Ingress zapewniający dostęp zewnętrzny
- DNS i wykrywanie usług