Heim > Web-Frontend > js-Tutorial > CKA Full Course Day Multi Container Pod Kubernetes – Sidecar vs. Init Container

CKA Full Course Day Multi Container Pod Kubernetes – Sidecar vs. Init Container

Linda Hamilton
Freigeben: 2024-10-30 01:17:28
Original
651 Leute haben es durchsucht

CKA Full Course Day Multi Container Pod Kubernetes - Sidecar vs Init Container

Eine Notiz von mir

In diesem Projekt wollte ich Kubernetes-Konzepte wie Init-Container und Sidecar-Container anwenden, aber ich wollte nicht einfach einem Tutorial folgen.

Mein Ziel war es, etwas Unvergessliches zu schaffen.

Nach einigem Brainstorming präsentiere ich Ihnen die Get Me App!


Was die Get Me App macht

Die Get Me App wurde entwickelt, um Inhalte aus verschiedenen GitHub-Repositories dynamisch abzurufen und anzuzeigen. Die Anwendung wird in einem Kubernetes-Pod ausgeführt und besteht aus zwei Hauptkomponenten:

  1. Nginx-Container: Dieser dient als Hauptanwendung und hostet den dynamisch abgerufenen Inhalt. Es ist leichtgewichtig und effizient und eignet sich daher ideal für die Bereitstellung statischer Webseiten.

  2. Sidecar-Container: Dieser läuft neben dem primären Nginx-Container. Es ist dafür verantwortlich, den Inhalt alle 5 Sekunden zu aktualisieren, indem es den neuesten HTML-Code von einer zufällig ausgewählten GitHub-Seite abruft. Dadurch wird sichergestellt, dass die von Nginx bereitgestellten Inhalte immer auf dem neuesten Stand sind.

  3. Init Container: Dies initialisiert die Umgebung, bevor die Hauptcontainer starten. Es prüft die Verfügbarkeit des Get Me App Service, indem es seinen DNS-Eintrag auflöst. Dieser Schritt stellt sicher, dass die Anwendung bereit ist, mit dem Dienst zu interagieren, sobald er ausgeführt wird. Lesen Sie hier mehr (ich musste)

Der Nginx-Container stellt dann die aktualisierte HTML-Webseite bereit und macht sie über einen Browser über einen NodePort-Dienst zugänglich.


Voraussetzungen

Bevor wir beginnen, stellen Sie sicher, dass Sie über eine Konfigurationsdatei zum Erstellen des Kubernetes-Clusters verfügen. Ausführliche Anweisungen zum Einrichten Ihres Kind-Clusters finden Sie in der Kind-Schnellstartanleitung.

Clusterkonfiguration (config.yml)

Erstellen Sie eine Datei mit dem Namen config.yml mit dem folgenden Inhalt, um Ihren Kind-Cluster zu definieren:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: cka-cluster  
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30001  # Change this to match the NodePort
    hostPort: 30001
    listenAddress: "0.0.0.0" 
    protocol: tcp
- role: worker  
- role: worker 
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie den folgenden Befehl aus, um den Cluster zu erstellen:

kind create cluster --name kind-cka-cluster --config config.yml
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie den folgenden Befehl, um den Kontext auf den neuen Cluster festzulegen:

kubectl config use-context kind-kind-cka-cluster
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 1: Erstellen Sie das Projektverzeichnis und die Projektdatei

Richten Sie zunächst die Verzeichnis- und Dateistruktur für das Projekt ein.

mkdir get-me-app
cd get-me-app
nano get-me-app.yml
Nach dem Login kopieren

Schritt 2: Definieren Sie die Kubernetes-Pod-Spezifikation

In der Datei get-me-app.yml definieren wir einen Kubernetes-Pod, der den Nginx-Container, einen Sidecar-Container für die Inhaltsaktualisierung und einen Init-Container für den ersten Datenabruf enthält.

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: cka-cluster  
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30001  # Change this to match the NodePort
    hostPort: 30001
    listenAddress: "0.0.0.0" 
    protocol: tcp
- role: worker  
- role: worker 
Nach dem Login kopieren
Nach dem Login kopieren

Was jeder Teil dieser Pod-Spezifikation bewirkt

  1. nginx-Container: Dies ist der primäre Container, der Inhalte auf Port 80 bereitstellt. Der volumeMount stellt das Verzeichnis /usr/share/nginx/html im Arbeitsverzeichnis-Volume des Pods zur Verfügung.

  2. Sidecar-Container (Content-Refresher): Dieser Container führt eine While-True-Schleife aus und lädt alle 5 Sekunden die neueste Version der Webseite herunter. Dadurch wird sichergestellt, dass der Inhalt im Workdir-Volume auf dem neuesten Stand bleibt.

  3. Init-Container (init-myservice): Dieser wartet darauf, dass der Get-Me-App-Service verfügbar wird, indem er kontinuierlich eine DNS-Suche durchführt. Es wird während der Initialisierung nur einmal ausgeführt und nach Abschluss nicht neu gestartet.

  4. Volumes: Das Workdir-Volume (ein Typ emptyDir) wird von den Containern gemeinsam genutzt, sodass der Init-Container, Sidecar und Nginx auf denselben Inhalt zugreifen und ihn bereitstellen können.


Schritt 3: Lokal mit NodePort testen (optional)

Um die App über einen Browser auf Ihrem lokalen Computer zugänglich zu machen, konfigurieren Sie einen NodePort-Dienst, um den Port 80 des Pods freizugeben.

Fügen Sie diese Dienstdefinition in get-me-app-service.yml hinzu:

kind create cluster --name kind-cka-cluster --config config.yml
Nach dem Login kopieren
Nach dem Login kopieren

Stellen Sie das Setup bereit mit:

kubectl config use-context kind-kind-cka-cluster
Nach dem Login kopieren
Nach dem Login kopieren

Sie können darauf zugreifen, indem Sie http://localhost:30001 in Ihrem Browser aufrufen. Sie sollten dann die Github-Seite aufrufen. Aktualisieren Sie die Seite nach 5 Sekunden und Sie sollten eine andere Github-Seite sehen.


Wichtige Erkenntnisse

Dieses Projekt hat mir geholfen zu verstehen, wie Init-Container gemeinsam genutzte Ressourcen initialisieren können und wie Sidecar-Container diese Ressourcen für die Hauptanwendung auf dem neuesten Stand halten. Es ist eine spannende Möglichkeit, mit der Echtzeit-Datenverarbeitung in Kubernetes zu experimentieren und etwas darüber zu lernen.


Hier ist der formatierte Inhalt für den von Ihnen bereitgestellten Abschnitt:


Tags und Erwähnungen

  • @piyushsachdeva
  • Tag 8: Video-Tutorial

Endnotizen: Bitte denken Sie daran, dass dieses Projekt nicht Teil der Video-Tutorials ist. Ich wollte etwas Eigenes aufbauen und dabei die Konzepte aus dem Tutorial als allgemeine Anleitung verwenden.

Das obige ist der detaillierte Inhalt vonCKA Full Course Day Multi Container Pod Kubernetes – Sidecar vs. Init Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage