Usługi są warstwą abstrakcyjną, aby aplikacja była dostępna jako usługa sieciowa na zestawie PODS. Oferuje pojedynczą nazwę DNS i adres IP, do którego można uzyskać dostęp. Jest dodawany przed każdym kapsułem, aby podać statyczny adres IP. W tym artykule opisano potrzebę warstwy usług i rodzajów usług w Kubernetes. Zapoznaj się z tym artykułem od początku do końca, jeśli jesteś nowy w tej koncepcji i nie wiesz, jak utworzyć usługę Kubernetes.
Jakie są usługi Kubernetes?
Usługa w Kubernetes to abstrakcja, która określa zbiór logicznych kapsuł, w których znajduje się aktywny komponent lub aplikacja. Ze względu na ulotny charakter poszczególnych strąków Kubernetes zapewnia jedynie dostępność określonych strąków i replik, a nie ich żywotność. Sugeruje to, że inne kapsuły, które muszą wchodzić w interakcje z tą aplikacją lub komponent.
Usługa jest również przypisana do symulowanego adresu IP (w Kubernetes jest zatem określana jako klasterip) i przetrwa, dopóki nie zostanie wyraźnie zabita. Zapytania do Usługi są przekazywane do odpowiednich podsów, co czyni go niezawodnym interfejsem do komunikacji aplikacji lub modułu. Prośby o aplikacje narodowe Kubernetes można również składać przez API w APISERVER dla Kubernetes, który stale ujawnia i utrzymuje prawdziwe punkty końcowe POD.
Kiedy potrzebujemy usług Kubernetes?
Oto powody, dla których potrzebujemy usług Kubernetes:
Stabilny adres IP
Mieć statyczny adres IP, który pozostaje, nawet jeśli kapsuł. Przed każdą kapsułką nazywamy usługi, które zapewniają trwały i stabilny dostęp do adresu IP do tego POD.
Równoważenie obciążenia
Kiedy masz repliki POD. Na przykład masz trzy repliki aplikacji mikrousług lub aplikacji MySQL. Usługa otrzymuje każde żądanie, na przykład ukierunkowane na tę aplikację, jest mysql i przekazuje ją do jednej z tych części.
Luźne powiązanie
Usługi są dobrą abstrakcją dla luźnego sprzężenia lub komunikacji w ramach komponentów klastra.
Wewnątrz i na zewnątrz klastra
Usługi zapewniają komunikację w klastrze i poza klastrem, takie jak żądania przeglądarki do klastra lub bazy danych.
Rodzaje usług w Kubernetes
Klasterip
Bardziej powszechny lub domyślny rodzaj usługi w Kubernetes. Bez przyznania dostępu zewnętrznego, buduje usługę w klastrze Kubernetes, której mogą być używane przez inne aplikacje w klastrze.
Nodeport
Ta usługa otwiera konkretny port na wszystkich zaimplementowanych węzłach w klastrze, a ruch odbierany przez port jest przekazywany do usługi. Do usługi nie można uzyskać z zewnętrznego IP klastra.
LOADBALANCER
Generuje publiczne IPS, aby umożliwić dostęp za pośrednictwem chmury. Podczas korzystania z Google Kubernetes Engine (GKE) wyważa się wyważony na pojedynczy adres IP, do którego mogą uzyskać dostęp użytkowników zewnętrznych i kieruje ruch do odpowiedniego węzła w klastrze Kubernetes. Można zastosować tę samą metodę co Clusterip lub Nodeport.
Nazwa zewnętrzna
Jest to standardowy sposób reprezentowania zewnętrznego magazynu danych, takiej jak baza danych, w Kubernetes poprzez utworzenie usługi. Gdy kapsuły z jednej przestrzeni nazw muszą komunikować się z usługą w innej przestrzeni nazw, możesz użyć tej usługi zewnętrznej nazwy (jako usługi lokalnej).
Wymagania wstępne:
Oto kilka niezbędnych rzeczy przed udaniem się do następnej sekcji:
Jak utworzyć usługę w Kubernetes
Tutaj przeprowadzimy Cię przez prosty przykład, który pokazuje, jak utworzyć usługę na Kubernetes. Zaczynajmy!
Krok 1: Rozpocznij klaster minikube
Najpierw uruchom klaster minikube, abyś mógł użyć poleceń Kubectl i uruchomić aplikację. Klaster minikube umożliwia wdrożenie węzłów, kapsułów, a nawet klastrów w środowisku Kubernetes. Dlatego konieczne jest utrzymanie minikubu w trybie aktywnym za pomocą kolejnego polecenia:
> Minikube start
To aktywuje klaster minikube i sprawia, że środowisko Kubernetes jest gotowe do użycia.
Krok 2: COnfigur the YAML manifest w celu rozmieszczenia dla Nginx
Usługa kieruje wszystkie przychodzące żądania do wdrożenia, które ustalamy przy użyciu następującego polecenia:
> Nano Sampledeployment.Yaml
Poniżej znajduje się pełny plik konfiguracyjny:
Krok 3: Utwórz obiekt serwisowy w klastrze
Aby dodać obiekt serwisowy do klastra, wykonaj następujące polecenie:
> Kubecl Zastosuj -f Sampledeployment.Yaml
Krok 4: Utwórz trzy repliki dla Nginx
Następujące polecenie wdraża Nginx z trzema kopiami:
> Kubectl Get wdrożenie | GREP Nginx
Krok 5: Określ informacje (POD, repliki)
Poniższe polecenia pokazują szczegóły wdrażania, repliki i POD:
> Kubectl get Replicaset | GREP Nginx
Krok 6: Szczegóły kapsułki
Tutaj używamy następującego polecenia, aby zobaczyć dokładne kopie Nginx:
> kubectl get POD | GREP Nginx
Widać, że na poprzednim zrzucie ekranu wykonane są trzy kopie Nginx.
Krok 7: CZrób definicję usług
W tym etapie tworzymy definicję usługi za pomocą następującego wymienionego polecenia:
> nano próbki.Yaml
W wyżej wymienionym opisie usługi usługa typu Nodeport jest budowana przy użyciu domyślnej przestrzeni nazw, a żądania są przekazywane do POD za pomocą etykiety Nginx, takimi jak pods, które zostały wygenerowane podczas poprzedniego etapu tworzenia wdrażania.
Krok 8: CZrób usługę
Aby utworzyć usługę, użyj następującego polecenia:
> Kubectl Zastosuj -f próbki.Yaml
W wyjściu widać, że usługa jest tworzona pomyślnie.
Krok 9: Uzyskaj szczegóły dotyczące usługi
W tym etapie otrzymujemy specyfikację Usługi i szukamy Nodeport, w którym jest dostępna. Polecenie do tego jest następujące:
> Kubectl Get Service | GREP Nginx
Krok 10: Opisz szczegóły dotyczące usługi
W tym etapie używamy polecenia Opis, aby zobaczyć szczegóły usługi. Polecenie opisu jest podane w następujący sposób:
> Kubectl Opisz serwis nginx
Usługa jest dostępna na porcie 30747, jak widać na poprzednim zrzucie ekranu. Możesz doświadczyć czegoś innego, ponieważ port został wybrany losowo z dostępnego zakresu. Teraz ta usługa na Nodeip: Nodeport umożliwia dostęp do aplikacji Nginx.
Wniosek
Dowiedzieliśmy się, że usługa to warstwa abstrakcyjna, która jest umieszczona przed kapsułami, aby zapewnić stabilny adres IP. Możemy uzyskać dostęp do Internetu za pomocą typu usługi LOADBALANCER. Następnie zaimplementowaliśmy prosty przykład tworzenia usługi krok po kroku na Kubernetes, umożliwiając dostęp do aplikacji Nginx.