Dienste sind die Abstraktionsebene, um eine Anwendung als Netzwerkdienst auf dem Satz von Pods zugänglich zu machen. Es bietet einen einzelnen DNS -Namen und eine IP -Adresse, auf die auf die Pods zugegriffen werden können. Es wird vor jedem Pod hinzugefügt, um eine statische IP -Adresse anzugeben. Dieser Artikel beschreibt die Notwendigkeit einer Serviceschicht und der Arten von Diensten in Kubernetes. Siehe diesen Artikel von Anfang bis Ende, wenn Sie neu in diesem Konzept sind und nicht wissen, wie Sie einen Kubernetes -Dienst erstellen können.
Was sind Kubernetes -Dienste?
Ein Dienst in Kubernetes ist eine Abstraktion, die eine Sammlung logischer Schoten definiert, bei denen eine aktive Komponente oder Anwendung untergebracht ist und eine Zugriffsrichtlinie enthält. Aufgrund der flüchtigen Natur einzelner Pods sorgt Kubernetes nur die Verfügbarkeit der angegebenen Pods und Repliken, nicht der Lebendigkeit. Dies deutet darauf hin, dass andere Pods, die mit dieser Anwendung oder Komponente interagieren müssen.
Ein Dienst wird auch mit einer simulierten IP -Adresse zugewiesen (in Kubernetes wird er somit als Clusterip bezeichnet) und überlebt, bis er ausdrücklich getötet wird. Abfragen zum Dienst werden an die entsprechenden Pods weitergeleitet, wodurch er eine zuverlässige Schnittstelle für die Anwendung oder Modulkommunikation ist. Anfragen nach Kubernetes-nativen Anwendungen können auch durch eine API im Apiserver für Kubernetes gestellt werden.
Wann brauchen wir die Kubernetes -Dienste??
Hier sind die Gründe, warum wir Kubernetes -Dienste brauchen:
Stabile IP -Adresse
Haben Sie eine statische IP -Adresse, die bleibt, auch wenn der Pod stirbt. Vor jedem Pod rufen wir die Dienste an, die anhaltende und stabile IP -Adresszugriff auf diesen Pod ermöglichen.
Lastverteilung
Wenn Sie POD -Repliken haben. Zum Beispiel haben Sie drei Repliken einer Microservice -Anwendung oder einer MySQL -Anwendung. Der Dienst erhält jede Anfrage, die auf diese Anwendung abzielt, beispielsweise ist MySQL und leitet sie an einen dieser Teile weiter.
Lose Kopplung
Services sind eine gute Abstraktion für lose Kopplung oder Kommunikation innerhalb der Komponenten des Clusters.
Innerhalb und außerhalb des Clusters
Services bieten Kommunikation innerhalb des Clusters und außerhalb des Clusters wie Browseranforderungen an den Cluster oder die Datenbank.
Arten von Diensten in Kubernetes
Clusterip
Der häufigere oder standardmäßigere Diensttyp in Kubernetes. Ohne einen externen Zugriff zu erteilen, erstellt es einen Dienst im Kubernetes -Cluster, der von den anderen Apps innerhalb des Clusters verwendet werden kann.
Nodeport
Dieser Dienst öffnet einen bestimmten Port auf allen implementierten Knoten im Cluster, und der vom Port empfangene Verkehr wird an den Dienst weitergeleitet. Der Service kann nicht von der externen Cluster -IP zugegriffen werden.
Lastenausgleicher
Es generiert die öffentlichen IPs, um einen Zugriff über die Cloud zu ermöglichen. Wenn Sie die Google Kubernetes Engine (GKE) verwenden, wird ein Netzwerk -Lastausgleich mit einer einzigen IP -Adresse erstellt, auf die von den externen Benutzern zugegriffen werden kann und den Datenverkehr auf den entsprechenden Knoten in Ihrem Kubernetes -Cluster leitet. Die gleiche Methode wie Clusterip oder Nodeport kann verwendet werden, um darauf zuzugreifen.
Externalname
Dies ist eine Standardmethode, um einen externen Datenspeicher wie eine Datenbank innerhalb von Kubernetes durch Erstellen eines Dienstes darzustellen. Wenn die Pods aus einem Namespace mit einem Dienst in einem anderen Namespace kommunizieren müssen, können Sie diesen externen Namensdienst verwenden (als lokaler Dienst).
Voraussetzungen:
Hier sind einige Must-Have-Dinge, bevor Sie in den folgenden Abschnitt gehen:
So erstellen Sie einen Dienst in Kubernetes
Hier führen wir Sie durch ein unkompliziertes Beispiel, das Ihnen zeigt, wie Sie einen Dienst auf Kubernetes erstellen. Lass uns anfangen!
Schritt 1: Starten Sie den Minikube -Cluster
Starten Sie zunächst den Minikube -Cluster, damit Sie die Kubectl -Befehle verwenden und Ihre Anwendung ausführen können. Mit dem Minikube -Cluster können Sie Ihre Knoten, Pods und sogar Cluster in der Kubernetes -Umgebung bereitstellen. Daher ist es wichtig, den Minikube im aktiven Modus mit dem nachfolgenden Befehl zu halten:
> Minikube Start
Dies aktiviert den Minikube -Cluster und macht die Kubernetes -Umgebung zur Verwendung.
Schritt 2: cStellen Sie das YAML -Manifest für die Bereitstellung für Nginx ein
Der Dienst lenkt alle eingehenden Anfragen auf die Bereitstellung, die wir mit dem folgenden Befehl festlegen:
> Nano -Probenahme.Yaml
Das Folgende ist die vollständige Konfigurationsdatei:
Schritt 3: Erstellen Sie ein Dienstobjekt im Cluster
Führen Sie den folgenden Befehl aus, um ein Dienstobjekt zu einem Cluster hinzuzufügen:
> kubecl anwenden -f probsDeployment anwenden.Yaml
Schritt 4: Erstellen Sie drei Repliken für Nginx
Im folgenden Befehl wird Nginx mit drei Kopien bereitgestellt:
> Kubectl Get Deployment | grep nginx
Schritt 5: Geben Sie die Informationen an (POD, Repliken)
Die folgenden Befehle zeigen Ihnen die Einzelheiten der Bereitstellung, Replikate und POD:
> Kubectl Holen Sie sich Replicaset | grep nginx
Schritt 6: POD -Details
Hier verwenden wir den folgenden Befehl, um die genauen Kopien von Nginx anzuzeigen:
> Kubectl Get Pod | grep nginx
Sie können sehen, dass im vorherigen Screenshot drei Kopien von Nginx vorgenommen werden.
Schritt 7: ceine Service -Definition wieder auferlegen
In diesem Schritt erstellen wir eine Dienstdefinition mit dem folgenden aufgeführten Befehl:
> Nano -Probenservice.Yaml
Mit der oben erwähnten Dienstbeschreibung wird ein Dienst des Nodeport -Typs mit dem Standard -Namespace erstellt, und die Anforderungen werden mit dem Nginx -Etikett wie Pods an die Pods weitergeleitet, die während der vorherigen Erstellung der Bereitstellung erstellt wurden.
Schritt 8: ceinen Service wieder aufnehmen
Verwenden Sie den folgenden Befehl, um einen Dienst zu erstellen:
> Kubectl -F -Probenservice anwenden.Yaml
In der Ausgabe können Sie sehen, dass der Dienst erfolgreich erstellt wird.
Schritt 9: Holen Sie sich die Servicedetails
In diesem Schritt erhalten wir die Spezifikation des Dienstes und suchen nach dem Nodeport, auf den er zugänglich ist. Der Befehl dafür ist wie folgt:
> Kubectl Get Service | grep nginx
Schritt 10: Beschreiben Sie die Servicedetails
In diesem Schritt verwenden wir den Befehl beschreiben, um die Dienstdetails zu sehen. Der Befehl beschreiben wird wie folgt angegeben:
> kubectl beschreiben service nginx
Der Dienst ist auf Port 30747 zugänglich, wie im vorherigen Screenshot zu sehen ist. Sie könnten etwas anderes erleben, weil der Port zufällig aus dem verfügbaren Bereich ausgewählt wurde. Jetzt ermöglicht dieser Dienst auf Nodeip: Nodeport den Zugriff auf die NGINX -Anwendung.
Abschluss
Wir haben erfahren, dass der Service eine abstrakte Ebene ist, die vor Pods platziert ist, um eine stabile IP -Adresse anzugeben. Wir können über den Lastbalancer -Service -Typ auf das Internet zugreifen. Danach haben wir das einfache Beispiel für das Erstellen eines Dienstes Schritt für Schritt auf Kubernetes implementiert, sodass ein Zugriff auf die NGINX-Anwendung ermöglicht wurde.