Für Kubernetes -Dienste sind verschiedene unterschiedliche Portkonfigurationen zur Verfügung, einschließlich Port, Targetport und Nodeport. Der Kubernetes -Dienst ist über den ausgewählten Port des Clusters zugänglich, und andere Pods können mit diesem Server über den konfigurierten Port kommunizieren. Auf dem TargetPort sendet der Dienst Anfragen und die Pods hören auf sie zu. Dieser Port muss auch für die Anwendung Ihres Containers geöffnet sein. Wenn das Portfeld nicht geliefert wird, wird Nodeport standardmäßig verwendet. In diesem Artikel werden wir durchgehen, wie sie Ports in Kubernetes freilegen können. Sie müssen POD und Bereitstellung verstehen, um den praktischen Übungen zu diesem Thema zu verfolgen.
Stellen Sie sicher, dass Sie Kubectl installiert haben. Sie benötigen außerdem ein Kubernetes-Cluster sowie das Kubectl-Befehlszeilen-Tool, das so konfiguriert ist. Öffnen Sie zunächst den Minikube -Cluster, der auf Ihrem Ubuntu 20 installiert ist.04 LTS OS. Um Minikube auszuführen, führen Sie den Befehl minikube start in der Befehlszeile aus.
Erstellen Sie eine Datei mit dem Touch -Befehl.
Der Schote.Die YAML -Datei wird erstellt, wie im dazugehörigen Screenshot gezeigt.
Erstellen Sie nun einen Nginx -Pod mit der folgenden Container -Portspezifikation:
Infolgedessen kann auf jeden Knoten in Ihrem Cluster zugegriffen werden. Untersuchen Sie die Knoten, auf denen die POD betrieben wird.
Um den vollständigen Status der Kubernetes Pods zu sehen, können Sie den Befehl GET POD wie unten erwähnt ausführen.
Mit dem im Screenshot angezeigten Befehl können Sie die IP -Adressen Ihrer Pods überprüfen.
Sie können SSH in jeden Knoten in Ihrem Cluster und bei beiden IP -Adressen in Ihrem Cluster und in Ihrem Cluster enthalten. Es ist erwähnenswert. Dies bedeutet, dass Sie viele Nginx -Pods auf demselben Knoten mit jeweils seinen Containeranschluss ausführen und über IP von einem anderen Pod oder Knoten im Cluster auf sie zugreifen können. Ports können weiterhin den Schnittstellen des Hostknotens ausgesetzt werden, genau wie Docker, obwohl diese Anforderung aufgrund des Netzwerkmodells stark reduziert wird.
So erstellen Sie einen Dienst?
Auf einem flachen, clusterweiten Adressraum haben Pods Nginx aus. Sie könnten theoretisch direkt mit diesen Schoten kommunizieren, aber was passiert, wenn einer von ihnen stirbt? Die Pods werden dadurch zugrunde gehen, und die Bereitstellung generiert neue mit alternativen IP -Adressen. Das Problem, das ein Dienst löst.
Ein Kubernetes -Dienst ist ein logischer Satz von Pods, die alle dieselbe Aufgabe erledigen und irgendwo in Ihrem Cluster ausführen. Wenn ein Dienst erstellt wird, erhält er eine bestimmte IP -Adresse, und diese Adresse wird während der gesamten Existenz des Dienstes festgelegt und wird sich nicht ändern. Pods können so eingestellt werden, dass sie mit dem Service kommunizieren, mit der Gewissheit, dass die Kommunikation an einen Servicemitglied Pod geladen wird. Mit Kubectl Expose können Sie einen Service für Ihre zwei Nginx -Replikate erstellen:
Eine Reihe von Pods unterstützt einen Dienst. Endpunkte bieten Zugriff auf diese Pods. Die Auswahl des Dienstes wird regelmäßig bewertet, wobei die Ergebnisse zu einem Endpunktobjekt mit dem Namen my-nginx veröffentlicht wurden. Wenn ein Pod stirbt, ist er von den Endpunkten getrennt. Danach wird es durch neue Schoten mit demselben Selektor ersetzt.
So greifen Sie auf den Service zu?
Umgebungsvariablen und DNS sind die beiden grundlegenden Methoden zum Auffinden eines Dienstes in Kubernetes. Ersteres verlangt das Coredns -Cluster -Addon, während letztere dies nicht tun.
Umgebungsvariablen
Das KuBelet erstellt eine Sammlung von Umgebungsvariablen für jeden aktuellen Dienst, wenn ein Pod auf einem Knoten startet. Infolgedessen kann es zu Schwierigkeiten im Auftragsprozess kommen. Untersuchen Sie die Umgebung Ihrer laufenden Nginx -Pods (der Name Ihres Pod wird sich unterscheiden), um zu verstehen, warum:
$ kubectl exec my-nginx-3800858182-JR4A2-Prinkenv | Grep -Service
Es ist erwähnenswert, dass Ihr Service nicht erwähnt wird. Da Sie die Repliken vor dem Dienst gemacht haben, ist dies der Fall. Dieser Schritt könnte Ihren gesamten Service senken, wenn er nicht funktioniert hat. Indem wir die beiden Schoten zerstören und darauf warten, dass der Einsatz sie neu erstellt, können wir die Aufgabe ordnungsgemäß erledigen. Der Dienst ist vor den Repliken diesmal vorhanden. Auf diese Weise können Sie einen Zeitplan für Scheduler-Ebene für Ihre Pods sowie die entsprechenden Umgebungsvariablen verteilt:
DNS
Kubernetes verfügt über einen DNS -Cluster -Addon -Dienst, der anderen Diensten automatisch DNS -Namen zuweist. Sie können sehen, ob es auf Ihrem Cluster ausgeführt wird, indem Sie den folgenden Befehl ausführen:
$ kubectl Get Services kube-dns-namespace = kube-system
Abschluss
In diesem Artikel haben Sie gelernt, dass für Kubernetes -Dienste verschiedene unterschiedliche Portkonfigurationen verfügbar sind, einschließlich Port, Targetport und Nodeport. Darüber hinaus haben wir eine vollständige Beschreibung dessen beigefügt, wie Sie Ports in Kubernetes erfolgreich freilegen können.