Detailliertes Tutorial zum Bereitstellen von Springboot oder Nginx mit Kubernetes

Detailliertes Tutorial zum Bereitstellen von Springboot oder Nginx mit Kubernetes

1 Einleitung

Nachdem „Maven Springboot mit einem Klick im Docker-Repository bereitstellt, um es für die Automatisierung vorzubereiten“, ist das Docker -Image von Springboot fertig und kann erfolgreich auf Docker ausgeführt werden. Es ist an der Zeit, es auf Kubernetes zu platzieren und auszuführen. Das ist ganz einfach, nur eine yaml Datei.

2 Ein-Klick-Bereitstellung von Springboot

2.1 Vorbereiten der YAML-Datei

Sobald die Image-Datei vorbereitet ist, ist es sehr einfach, sie in Kubernetes bereitzustellen. Sie benötigen lediglich eine Datei im yaml Format, die die benötigten Komponenten beschreiben kann, z. B. Deployment , Service , Ingress usw. Die Definition lautet wie folgt:

API-Version: Apps/v1
Art: Bereitstellung
Metadaten:
 Name: pkslow-springboot-Bereitstellung
Spezifikation:
 Wähler:
 Übereinstimmungsetiketten:
  App: Springboot
 Replikate: 2
 Vorlage:
 Metadaten:
  Beschriftungen:
  App: Springboot
 Spezifikation:
  Behälter:
  - Name: Springboot
   Bild: pkslow/springboot-mongo:0.0.6
   Häfen:
   - ContainerPort: 8080

---
API-Version: v1
Art: Dienstleistung
Metadaten:
 Beschriftungen:
 App: Springboot
 Name: pkslow-springboot-service
Spezifikation:
 Häfen:
 - Anschluss: 8080
  Name: Springboot-Dienst
  Protokoll: TCP
  ZielPort: 8080
  KnotenPort: 30080
 Wähler:
 App: Springboot
 Typ: NodePort

Kind : Typ, einschließlich Deployment , Service , Pod , Ingress usw., was sehr umfangreich ist;

metadata : werden verwendet, um einige Komponenteninformationen wie Name, Bezeichnung usw. zu definieren.

labels : Beschriftungsfunktion, sehr nützlich zum Auswählen von Assoziationen; label bieten jedoch keine Eindeutigkeit, daher können Kombinationen zur Auswahl verwendet werden;

nodePort : Für Dienste, die extern verfügbar gemacht werden müssen, gibt es drei Möglichkeiten: NodePorts , LoadBalancer und Ingress . Hier wird NodePorts verwendet. Es ist zu beachten, dass der Standard-Portbereich [3000-32767] ist. Wenn andere Bereiche erforderlich sind, müssen die entsprechenden Parameter geändert werden.

2.2 Bereitstellung über den Befehl kubectl

Sobald die yaml -Datei fertig ist, können Sie sie mit dem folgenden Befehl bereitstellen:

$ kubectl create -f pksow-springboot.yaml 
deployment.apps/pkslow-springboot-deployment erstellt
service/pkslow-springboot-service erstellt

Das Konsolenprotokoll zeigt, dass Deployment und Service erfolgreich erstellt wurden. Zeigen Sie Dashboard wie folgt an:

Greifen Sie auf den Web zu: http://localhost:30080/user

Probieren Sie es über die Befehlszeile aus:

$ kubectl get Bereitstellung
NAME BEREIT AKTUELL VERFÜGBAR ALTER
pkslow-springboot-Bereitstellung 2/2 2 2 8m2s

$ kubectl Service abrufen
NAME TYP CLUSTER-IP EXTERNE-IP PORT(S) ALTER
kubernetes ClusterIP 10.96.0.1 <keine> 443/TCP 10m
pkslow-springboot-service NodePort 10.102.218.119 <keine> 8080:30080/TCP 8m7s

$ kubectl hol dir pod
NAME BEREIT STATUS NEUSTART ALTER
pkslow-springboot-deployment-68dffc6795-874tp 1/1 Wird ausgeführt 0 8m15s
pkslow-springboot-deployment-68dffc6795-89xww 1/1 Wird ausgeführt 0 8m15s

Bisher haben wir Springboot erfolgreich für Kubernetes veröffentlicht.

2.3 Versuchen Sie, eine Kapsel zu töten?

Das kleinste Verwaltungselement Kubernetes ist kein Container, sondern Pod .

Versuchen wir, einen Pod zu löschen und sehen wir, was passiert.

$ kubectl lösche pod pkslow-springboot-deployment-68dffc6795-89xww
Pod „pkslow-springboot-deployment-68dffc6795-89xww“ gelöscht

$ kubectl hol dir pod
NAME BEREIT STATUS NEUSTART ALTER
pkslow-springboot-deployment-68dffc6795-874tp 1/1 Wird ausgeführt 0 13 m
pkslow-springboot-deployment-68dffc6795-gpw67 1/1 Läuft 0 46s

Es zeigt sich, dass nach dem Löschen eines anderen Pod automatisch ein neuer Pod für uns generiert wird, was die Hochverfügbarkeit des gesamten Dienstes verbessern kann.

2.4 Versuchen Sie, einen Container zu beenden?

Lassen Sie uns untersuchen, was passiert, wenn wir eine Containerinstanz beenden.

$ Docker ps
$ docker rm -f 57869688a226
57869688a226

$ Docker ps

Nach dem Experimentieren haben wir festgestellt, dass nach dem Beenden eines Containers automatisch eine neue Containerinstanz für uns generiert wird. Pod wird nicht verändert oder regeneriert.

2.5 Schnelle Pod-Erweiterung

Wenn die Anzahl der Benutzeranforderungen plötzlich ansteigt und der Dienst damit nicht fertig wird, muss die Anzahl der Pod erhöht werden. Ändern Sie einfach replicas in der yaml -Konfigurationsdatei und aktualisieren Sie sie auf replicas: 4 . Führen Sie dann den folgenden Befehl aus:

$ kubectl apply -f pksow-springboot.yaml

Überprüfen Sie Dashboard und Sie werden sehen, dass zu den ursprünglichen zwei Pod zwei weitere hinzugefügt wurden.

3 Ein-Klick-Bereitstellung von Nginx

Wenn Sie kein Springboot -Image haben, können Sie das offizielle Nginx Image verwenden. Die yaml Datei lautet wie folgt:

API-Version: Apps/v1
Art: Bereitstellung
Metadaten:
 Name: nginx-Bereitstellung
Spezifikation:
 Wähler:
 Übereinstimmungsetiketten:
  App: nginx
 Replikate: 3
 Vorlage:
 Metadaten:
  Beschriftungen:
  App: nginx
 Spezifikation:
  Behälter:
  - Bezeichnung: nginx
   Bild: nginx:1.19.0
   Häfen:
   - ContainerPort: 80

---
API-Version: v1
Art: Dienstleistung
Metadaten:
 Beschriftungen:
 App: nginx
 Name: nginx-Dienst
Spezifikation:
 Häfen:
 - Anschluss: 80
  Name: nginx-service1
  Protokoll: TCP
  ZielPort: 80
  KnotenPort: 30000
 - Hafen: 81
  Name: nginx-service2
  Protokoll: TCP
  ZielPort: 80
  KnotenPort: 30001
 Wähler:
 App: nginx
 Typ: NodePort

Führen Sie den Bereitstellungsbefehl aus:

$ kubectl apply -f nginx-deployment-scale.yaml 
deployment.apps/nginx-deployment erstellt
service/nginx-service erstellt

Zeigen Sie Dashboard wie folgt an:

Greifen Sie unter http://localhost:30000/ oder http://localhost:30001 auf den Dienst zu. Weil wir zwei eingerichtet haben.

4 Fazit

Dieser Artikel vermittelt Ihnen anhand von zwei Beispielen ein anschauliches Verständnis von Kubernetes , was für ein späteres tieferes Verständnis der Konzepte sehr hilfreich ist. Auf die Grundsätze und Einzelheiten werden wir später noch eingehen.

Dies ist das Ende dieses Artikels über die Bereitstellung von Springboot oder Nginx mit Kubernetes. Weitere Informationen zur Bereitstellung von Springboot oder Nginx mit Kubernetes finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Der gesamte Prozess des Hot-Loading der Nginx-Konfiguration in Kubernetes

<<:  Detaillierte Erläuterung der zugrunde liegenden Implementierung des absteigenden Index, einer neuen Funktion von MySQL 8

>>:  JavaScript, um einen ausgefallenen Karusselleffekt zu erzielen

Artikel empfehlen

Grundsätze für die Bereitstellung und Konfiguration mehrerer Tomcat-Instanzen

1. Schalten Sie die Firewall aus und übertragen S...

Grundlegende Nutzungsdetails zur Vue-Komponentenbildung

Inhaltsverzeichnis 1. Was ist Komponentenbildung?...

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (3)

In diesem Artikel wird der dritte Artikel zur Ver...

Detaillierter Beispielcode einer MySQL-Batch-Einfügeschleife

Hintergrund Als ich vor einigen Tagen Paging in M...

Grundlegendes Lernen und Erfahrungsaustausch zu MySQL-Transaktionen

Eine Transaktion ist eine logische Gruppe von Ope...

Linux: Fünf-Schritte-Kernel-Build-Baum

Inhaltsverzeichnis 0. Der mit dem System geliefer...

MySQL 5.7.21 Installations- und Konfigurations-Tutorial unter Windows 10

Dieser Artikel zeichnet die Installations- und Ko...

Analyse und Lösung zur Leistungsoptimierung von Vue.js-Anwendungen

Inhaltsverzeichnis 1. Einleitung 2. Warum brauche...

jQuery implementiert Navigationsleisteneffekt mit Erweiterungsanimation

Ich habe eine Navigationsleiste mit einem erweite...

Implementierungsbeispiel für die Bereitstellung von Docker rocketmq

Inhaltsverzeichnis Vorbereitung Bereitstellungspr...

Implementierung eines schwebenden Werbestreifens in HTML und CSS

1.html Teil Code kopieren Der Code lautet wie folg...