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

Analyse verschiedener Fehler bei Sortierregeln für MySQL-Tabellen

Der folgende Fehler wird gemeldet, wenn MySQL meh...

HTML + CSS + JS realisiert den Scroll-Gradienteneffekt der Navigationsleiste

Inhaltsverzeichnis Erster Blick auf die Wirkung: ...

Implementierung von nacos1.3.0, erstellt mit Docker

1. Fortsetzen nacos-Datenbank Datenbankname nacos...

So verstehen Sie die Dateninteraktion und -anzeige im Vue-Frontend und -Backend

Inhaltsverzeichnis 1. Technischer Überblick 2. Te...

MySQL wählt die richtige Speicher-Engine

Wenn es um Datenbanken geht, ist eine der am häuf...

So verwenden Sie die Lotteriekomponente des WeChat Mini-Programms

Es wird in Form von WeChat-Komponenten bereitgest...

Analyse des Uniapp-Einsteiger-NVUE-Klettergrubenrekords

Inhaltsverzeichnis Vorwort Hallo Welt Bild Rahmen...

Dieser Artikel zeigt Ihnen, wie Sie Vue 3.0 responsive verwenden

Inhaltsverzeichnis Anwendungsfälle Reaktive API-b...

Gemeinsame Nutzung von zwei Plug-Ins zur Übersetzung von Webseiten

Übersetzen Sie diese URL: http://translateth.is G...