So erstellen Sie einen Kubernetes -Dienst

So erstellen Sie einen Kubernetes -Dienst

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:

  • Kubernetes Cluster
  • Minikube Cluster
  • Ein Cluster, der auf Kubernetes mit mindestens einem einzelnen Arbeiterknoten läuft.

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.