Services zapewniające dostęp sieciowy
Udostępniaj aplikacje wewnątrz klastra i poza nim, korzystając z różnych typów obiektów Service w Kubernetes.
Services zapewniające dostęp sieciowy to bezpłatna lekcja Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.
Czym jest Kubernetes Service?
W Kubernetes Pody są najmniejszymi jednostkami, które można wdrożyć. Z założenia mają charakter efemeryczny, co oznacza, że w dowolnym momencie mogą zostać utworzone, usunięte lub zastąpione, często otrzymując nowe adresy IP.
Ta dynamiczna natura utrudnia innym aplikacjom niezawodne odnajdywanie Podów i komunikowanie się z nimi. Właśnie tutaj przydają się Services!

Zapewnianie stabilnego dostępu sieciowego
Kubernetes Service działa jako stabilny punkt końcowy sieci dla określonego zestawu Podów. Można go traktować jak stały adres, który nie zmienia się nawet wtedy, gdy zmieniają się Pody, które za nim stoją.
- Services zapewniają stały adres IP i nazwę DNS.
- Mogą równoważyć obciążenie ruchem między wieloma Podami.
- Zapewniają ciągłą dostępność podczas skalowania lub ponownego uruchamiania Podów.
Łączenie Podów z Services
W jaki sposób Service wie, do których Podów kierować ruch? Wykorzystuje etykiety i selektory.
Podczas tworzenia Podów przypisują im Państwo etykiety (pary klucz-wartość, takie jak app: my-app). Następnie Service określa selector pasujący do tych etykiet, tworząc dynamiczne powiązanie.
Dostęp wewnętrzny za pomocą ClusterIP
ClusterIP to domyślny i najczęściej używany typ Service. Przypisuje stabilny wewnętrzny adres IP w obrębie klastra Kubernetes. Ten adres jest dostępny wyłącznie z innych Podów lub Node'ów wewnątrz klastra.
To idealne rozwiązanie dla usług backendowych (takich jak baza danych lub API), które muszą komunikować się tylko z innymi usługami w ramach aplikacji.
Definiowanie usługi ClusterIP
Oto prosta definicja usługi ClusterIP w YAML. Proszę zwrócić uwagę na element selector pasujący do etykiety app: my-backend oraz na sposób mapowania elementu port na targetPort.
apiVersion: v1
kind: Service
metadata:
name: my-backend-service
spec:
selector:
app: my-backend
ports:
- protocol: TCP
port: 80
targetPort: 8080 # Port your application listens on
type: ClusterIPDostęp zewnętrzny za pomocą NodePort
Usługa NodePort udostępnia aplikację na stałym porcie na adresie IP każdego Node'a. Dzięki temu do usługi można uzyskać dostęp spoza klastra, używając adresu IP dowolnego Node'a i określonego portu.
Wartość nodePort zwykle mieści się w zakresie 30000–32767. Rozwiązanie to jest przydatne w przypadku prostego dostępu zewnętrznego lub środowisk deweloperskich.
Definiowanie usługi NodePort
Aby udostępnić usługę zewnętrznie za pośrednictwem NodePort, należy ustawić type: NodePort. Opcjonalnie można określić nodePort, w przeciwnym razie Kubernetes wybierze go automatycznie.
apiVersion: v1
kind: Service
metadata:
name: my-frontend-service
spec:
selector:
app: my-frontend
ports:
- protocol: TCP
port: 80
targetPort: 80 # Port your application listens on
nodePort: 30080 # Optional: specific port on the Node
type: NodePortChmurowe load balancery
Typ usługi LoadBalancer jest przeznaczony dla środowisk chmurowych. Po utworzeniu usługi tego typu dostawca chmury (np. AWS, GCP lub Azure) automatycznie udostępnia zewnętrzny load balancer.
Load balancer otrzymuje publiczny adres IP i kieruje ruch zewnętrzny bezpośrednio do Podów, często oferując zaawansowane funkcje, takie jak terminowanie SSL.
Definiowanie usługi LoadBalancer
W przypadku aplikacji publicznych działających w chmurowym klastrze Kubernetes najczęściej wybiera się LoadBalancer. Znacznie upraszcza on zarządzanie dostępem zewnętrznym.
apiVersion: v1
kind: Service
metadata:
name: my-web-app-lb
spec:
selector:
app: my-web-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerWybór właściwej usługi
Państwa zespół wdraża nową aplikację w Kubernetes. Proszę rozważyć następujące scenariusze:
- backendowe API, do którego dostęp muszą mieć tylko inne usługi w obrębie klastra.
- frontendowy serwer WWW, który musi być dostępny z internetu, a wdrożenie odbywa się u dostawcy chmurowego (AWS, GCP, Azure).
Jaki typ Service najlepiej pasuje do frontendowego serwera WWW?
Podsumowanie: Services zapewniające dostęp sieciowy
Dowiedzieli się Państwo, że Kubernetes Services zapewniają stabilny dostęp sieciowy do dynamicznych Podów. Są niezbędne, aby aplikacje mogły niezawodnie się komunikować.
- ClusterIP: tylko do komunikacji wewnątrz klastra.
- NodePort: udostępnia usługę na stałym porcie na adresie IP każdego Node'a; umożliwia dostęp zewnętrzny w określonych przypadkach.
- LoadBalancer: integruje się z dostawcami chmurowymi, aby udostępnić zewnętrzny load balancer zapewniający dostęp publiczny.
Wybór właściwego typu Service ma kluczowe znaczenie dla kontrolowania sposobu udostępniania aplikacji.
Często zadawane pytania
Czy lekcja „Services zapewniające dostęp sieciowy” jest bezpłatna?
Tak — pełny tekst „Services zapewniające dostęp sieciowy” 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 Docker & DevOps Fundamentals, przejdź na CoddyKit PRO. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.
Co nauczysz się w „Services zapewniające dostęp sieciowy”?
Udostępniaj aplikacje wewnątrz klastra i poza nim, korzystając z różnych typów obiektów Service w Kubernetes. Ćwiczysz Docker & DevOps Fundamentals 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ąć Docker & DevOps Fundamentals?
Nie wymagamy żadnego doświadczenia. Docker & DevOps Fundamentals 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 „Services zapewniające dostęp sieciowy”?
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 Docker & DevOps Fundamentals?
Tak. Każda lekcja Docker & DevOps Fundamentals 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
- Deployments dla aplikacji bezstanowych
- Services zapewniające dostęp sieciowy
- ConfigMaps i Secrets
- Ingress i routing zewnętrzny