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

Ein tiefer Einblick in die MySQL InnoDB-Speicher-Engine

Vorwort InnoDB gehört in MySQL zur Speicher-Engin...

So erhalten und verwenden Sie die Zeit im Linux-System

Es gibt zwei Arten von Linux-Systemzeiten. (1) Ka...

MySQL-Optimierungszusammenfassung – Gesamtzahl der Abfrageeinträge

1. COUNT(*) und COUNT(COL) COUNT(*) führt normale...

Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Inhaltsverzeichnis Anwendungsszenario Ideen Proje...

Beispielcode für CSS-Pseudoklassen zum Ändern des Eingabeauswahlstils

Hinweis: Diese Tabelle ist aus dem W3School-Tutor...

Vue+Openlayer verwendet modify, um den gesamten Code des Elements zu ändern

Vue+Openlayer verwendet „modify“, um Elemente zu ...

Zusammenfassung der Grundlagen der Vue-Komponenten

Komponentengrundlagen 1 Wiederverwendung von Komp...

CSS-Stil zum Zentrieren des HTML-Tags im Browser

CSS-Stil: Code kopieren Der Code lautet wie folgt:...

Der Excel-Export schlägt in der Docker-Umgebung immer fehl

Der Excel-Export schlägt in der Docker-Umgebung i...

Detaillierte Beispiele zur Verwendung der Box-Shadow-Eigenschaft in CSS3

CSS enthält viele Attribute. Manche Attribute wer...

Entwicklungsdetails von Vue3-Komponenten

Inhaltsverzeichnis 1. Einleitung 2. Komponentenen...