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

Zusammenfassung der Linux-Befehlsmethoden zum Anzeigen verwendeter Befehle

Im System werden viele Befehle verwendet. Wie kön...

Tabellen dynamisch in HTML hinzufügen_PowerNode Java Academy

Ohne weitere Umschweife werde ich den Code direkt...

Tipps zum Gestalten der Fotovorschau-Navigation auf Webseiten

<br />Navigation bezieht sich nicht nur auf ...

Detaillierte Schritte zum Speichern von Emoji-Ausdrücken in MySQL

Verursacht durch: java.sql.SQLException: Falscher...

Vue verwendet das Video-Tag, um die Videowiedergabe zu implementieren

In diesem Artikel wird der spezifische Code von V...

Detaillierte Erklärung zum Anpassen des Stils von CSS-Bildlaufleisten

Dieser Artikel stellt den CSS-Bildlaufleistensele...

Zwei Abfragemethoden, wenn der MySQL-Abfragefeldtyp JSON ist

Die Tabellenstruktur ist wie folgt: Ich würde var...

Einige wunderbare Verwendungsmöglichkeiten von URL-Objekten in JavaScript

Inhaltsverzeichnis Vorwort Parameter analysieren ...

Implementierung der privaten Docker-Bibliothek

Die Installation und Bereitstellung eines private...

So erweitern Sie den Speicherplatz eines Linux-Servers

Inhaltsverzeichnis Vorwort Schritt Vorwort Heute ...

Prinzip und Anwendung der MySQL-Master-Slave-Synchronisation

Inhaltsverzeichnis 1. Master-Slave-Synchronisatio...

HTML-Tutorial: Titelattribut und Alt-Attribut

XHTML ist die Grundlage des CSS-Layouts. jb51.net...

Installations-Tutorial zur komprimierten Version von MySQL 8.0.11 unter Win10

In diesem Artikel finden Sie das Installations-Tu...