Was ist Service Discovery in Kubernetes?

Was ist Service Discovery in Kubernetes?
Microservices werden in modernen Systemen verwendet, um sie skalierbar und funktional zu halten. Mit seinen Werkzeugen und Funktionen erstellt Kubernetes die perfekte Einstellung für Microservices zur Zusammenarbeit. Die Lösung als Ganzes wird viel flexibler, da jede Komponente der Anwendung in einem Container bereitgestellt wird. Service Discovery ist der Prozess des Auffindens von Apps und Microservices in einem Netzwerk.

Die Technik, Geräte und Dienste in einem Netzwerk automatisch zu finden, wird als Service Discovery bezeichnet. Das Service Discovery Protocol (SDP) ist ein Netzwerkstandard für das Erkennen von Netzwerken und die Suche nach Ressourcen, wenn Benutzer mit geeigneten Ressourcen zur Verfügung gestellt werden, z.

Die Serviceerkennung erfolgt in Kubernetes mit automatisch erstellten Dienstnamen, die der IP -Adresse des Dienstes entsprechen. In Kubernetes bietet das Dienstemodell die grundlegendste und dennoch wichtigste Komponente der Microservices -Entdeckung. Das Erkennen, wie eine Anwendung auf Kubernetes arbeitet. Kubernetes Service Syncs standardisiert und automatisiert die Konnektivität zwischen Diensten, wodurch Containerprobleme in einem Microservices -Design behandelt werden. Services verknüpfen Pods auf das Netzwerk auf konsistente Weise über Cluster hinweg konsistent.

Der Prozess der Bestimmung, wie der Service beitritt, wird als Service Discovery bezeichnet. Serverseitige und clientseitige Service-Erkennung sind die Haupttypen der Serviceerkennung. Client-Anwendungen können serverseitige Service Discovery-Ansätze verwenden, um über einen Router oder einen Ladebalancer zu unterstützen. Mit dem Kunden-Seite-Service-Erkennung können Kundenanwendungen Dienste finden, indem Sie eine Serviceregistrierung mit Serviceinstanzen und Endpunkten suchen oder fragen.

Serviceinstanzen können mit in zwei verschiedenen Methoden mit dem Dienstregister registriert und vorübergehend ausgesetzt werden. Das Selbstregistrierungsmuster ermöglicht es den Dienstleistungsunternehmen, sich unabhängig vom Service-Register zu registrieren. Das Registrierungsmuster von Drittanbietern umfasst die Ausführung einer anderen Systemkomponente die Registrierung und die Deregistrierung aufgrund des Dienstes. Eine der Komponenten, die diese Containerplattform fähig und anpassungsfähig machen, ist Kubernetes Service Discovery. Durch die Standardisierung rendern fortschrittliche Technologien wie Service Mesh Kubernetes Service Discovery effektiver. Wir werden uns einige der grundlegenden Prozesse der Serviceerkennung in Kubernetes in diesem Thema ansehen.

Beginnen wir damit, einige notwendige Dienste zusammenzustellen, um zu untersuchen. Lassen Sie uns auf das Terminal des Ubuntu 20 zugreifen.04 LTS OS, um über Service Discovery in Kubernetes zu sprechen. Zu diesem Zweck können Sie den Anwendungsbereich oder einen Abkürzungschlüssel verwenden, der "Strg+Alt+T" lautet.

Führen Sie den unten aufgeführten Befehl aus, um Minikube zu initialisieren, um den Befehl zu initialisieren.

$ minikube Start

Die aktuelle Ausgabe von Minikube wird in der Ausgabe dieser Anweisung angezeigt. Jetzt werden wir einen Namespace mit dem Namen "entwickeln", indem wir den CAT -Befehl in der Shell verwenden.

$ cat << ENDL > Entwicklungsnamespace.YML

Der Inhalt wird direkt zum Terminal hinzugefügt, ohne ihn aus der Datei zu öffnen.

Verwenden Sie den Befehl zum Erstellen eines Namespace im Terminal als:

$ kubectl anwenden -f -n -namespace anwenden.YML

Der Namespace wurde effektiv erstellt. Jetzt werden wir einen anderen Namespace mit dem Namen "Produktion" erstellen, indem wir den CAT -Befehl in der Shell verwenden.

Führen Sie den Befehl als:

$ kubectl anwenden -f production -namespace.YML

Auch hier wurde der Namespace effektiv erstellt. Jetzt werden wir unsere Beispielanwendungen in den zuvor erstellten Namespaces bereitstellen. Zu diesem Zweck erstellen wir eine Bereitstellung mit dem Namen „Hello“ für den Entwicklungsnamespace, indem wir den CAT -Befehl in der Shell verwenden.

$ cat << ENDL > App-Deployment-Develop.YML

Der Inhalt wird direkt zum Terminal hinzugefügt, ohne ihn aus der Datei zu öffnen.

Führen Sie den Befehl als:

$ kubectl anwenden -f App-Deployment-Develop.YML

Die Bereitstellung wurde effektiv erstellt. Auch hier erstellen wir eine weitere Bereitstellung für einen Namespace mit dem Namen „Produktion“, indem wir den CAT -Befehl in der Shell verwenden.

$ cat << ENDL > App-Deployment-Produktion.YML

Verwenden Sie den Befehl als:

$ kubectl anwenden -f App-Deployment-Produktion anwenden.YML

Die Bereitstellung wurde effizient erstellt, wie aus der angezeigten Ausgabe ersichtlich ist. Um nun die Pods zu definieren und ihre IP-Adresse zu finden, werden wir den Befehl unten ausführen als:

$ kubectl beschreibt Pods-All-NamesPaces

Die IP -Adressen für jede POD im obigen Ausgang sind intern und einzigartig für jedes Vorkommen. Jedes Mal, wenn wir die Anwendung neu anwenden, würde sie eine neue IP -Adresse erhalten. Wir können jetzt testen, ob wir eine Schote in den Cluster pingen können oder nicht. Erstellen Sie eine Datei, indem Sie den Befehl Cat als verwenden.

$ cat << ENDL >> Jumpod.YML

Führen Sie den Befehl als:

kubectl anwenden -f sprungod.YML

Die Pod wurde erstellt, wie aus dem oben genannten Bild ersichtlich ist. Ping der IP -Adresse eines temporären POD im Standard -Namespace mit dem Befehl cat in der Shell mit dem Befehl kubectl exec verwendet.

$ kubectl exec -es Jumpod Ping 10.244.0.149

Das Domainnamensystem gehört zu den wesentlichen Aspekten des effektiven Internetdienstes (DNS). Alle Internetinhalte und Webdienste hängen von DNS ab, sodass Sie in der Lage sein müssen, alle Probleme schnell zu lösen. Ein Tool namens nslookup ist eine Methode, um dies zu tun. NSLookup steht für „Namens -Server -Lookup“. Sie können die Informationen zu einem Domänennamen überprüfen und Probleme entdecken. Wir können den FQDN des Pod mit dem NSLookup -Tool erwerben:

$ kubectl exec -es Jumpod nslookup 10.244.0.149

Um nun die extern bereitgestellte IP -Adresse zu überprüfen, werden wir den folgenden Befehl ausführen:

$ kubectl Get Services-All-NamesPaces

Abschluss

Bei der Migration zu Microservices ist die Service -Erkennung wahrscheinlich das wichtigste Infrastruktur, um sie zu implementieren. In diesem Tutorial haben wir gesehen, wie einfach es ist, eine App der Öffentlichkeit mit Kubernetes -Diensten auszusetzen.