GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie ein StatefulSet in Kubernetes

StatefulSets enthalten eine Reihe von Pods mit eindeutigen, dauerhaften Identitäten und stabilen Hostnamen. Eine Pod-Vorlage wird in einem Statefulset verwendet, das eine Spezifikation für seine Pods enthält, Pods werden anhand dieser Spezifikation erstellt. Wir können zustandsbehaftete Anwendungen und geclusterte Anwendungen mithilfe von Statefulsets in Kubernetes bereitstellen. StatefulSet kann aktualisiert werden, indem Änderungen an seiner Pod-Spezifikation vorgenommen werden, die seine Container-Images und Volumes enthält.

StatefulSets können verwendet werden, wenn die Anwendungen eine der folgenden Eigenschaften benötigen.

  • Stabile, eindeutige Netzwerkkennungen.
  • Stabiler, persistenter Speicher.
  • Geordnete, reibungslose Bereitstellung und Skalierung.
  • Bestellte, automatische fortlaufende Updates.

Bei einem StatefulSet mit N Replikaten werden Pods bei der Bereitstellung nacheinander in der Reihenfolge {0..N-1} erstellt. Wenn Pods gelöscht werden, werden sie in umgekehrter Reihenfolge von {N-1..0}.

beendet

Um mehr über Statefulset zu erfahren, klicken Sie hier.

In diesem Artikel erstellen wir ein Statefulset mit Repliken von Nginx-Pods. Wir werden Operationen an den Pods durchführen, um zu sehen, wie sie gelöscht und erstellt werden.

Voraussetzungen

  1. Kubernetes-Cluster mit mindestens einem Worker-Knoten.
    Wenn Sie erfahren möchten, wie Sie einen Kubernetes-Cluster erstellen, klicken Sie hier. Dieser Leitfaden hilft Ihnen beim Erstellen eines Kubernetes-Clusters mit 1 Master und 2 Knoten auf AWS Ubuntu 18l04 EC2-Instances.

Was wir tun werden

  1. Erstellen Sie ein StatefulSet

Erstellen Sie ein Statefulset

Erstellen Sie eine Datei und fügen Sie ihr die folgende Statefulset-Definition hinzu.

vim statefulset.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web

In diesem Beispiel 

  • Ein Headless-Dienst namens nginx , wird verwendet, um das Netzwerk zu steuern.
  • Das StatefulSet mit dem Namen web hat 3 Replikate des nginx-Containers, die in einzigartigen Pods gestartet werden.
  • nginx-Image mit Version slim:0.8 wird zum Bereitstellen von Nginx verwendet.

Um ein Statefulset zu erstellen, führen Sie die folgenden Befehle aus.

kubectl get statefulset

kubectl create -f statefulset.yml

Führen Sie die folgenden 2 Befehle aus, um das im obigen Schritt erstellte Statefulset und den Dienst aufzulisten.

kubectl get statefulset

kubectl-Get-Service

Rufen Sie die Pods mit dem folgenden Befehl ab und sehen Sie, dass die Pods Nummern als Suffix im Pod-Namen haben.

kubectl erhält Pods

Führen Sie die folgenden Befehle aus, um die vollständigen Details des Statefulsets abzurufen.

kubectl get statefulset

kubectl beschreibt statefulset web

Lassen Sie uns nun die Pods löschen und sehen, wie Namen erhalten bleiben, selbst nachdem neue Pods erstellt wurden.

Wir löschen 2 Pods, um zu sehen, welche Namen den neuen Pods bei der Erstellung zugewiesen werden.

kubectl erhält Pods

kubectl Pods löschen web-0 web-2

kubectl erhält Pods

Im obigen Screenshot sehen Sie, dass neu erstellte Pods auch nach dem Löschen der Pods denselben Namen erhalten.

Fazit

In diesem Artikel haben wir ein Statefulset erstellt und Operationen darauf ausgeführt, um seine Details zu überprüfen. Wir haben die Pods auch gelöscht, um zu sehen, wie der Name des Pods erhalten bleibt und derselbe nach dem Löschen den neu erstellten Pods zugewiesen wird.


Linux
  1. So erstellen Sie Git-Tags

  2. So erstellen Sie eine Subdomain

  3. So erstellen Sie eine Subdomain

  4. So erstellen Sie einen Link zu einem Verzeichnis

  5. Wie bekomme ich den Verlauf von Pods, die auf Kubernetes Node ausgeführt werden?

So erstellen Sie eine Datei unter Linux

So erstellen Sie eine Tar-Gz-Datei

So erstellen Sie ein Terraform-Modul

So erstellen Sie eine Bereitstellung in Kubernetes

So erstellen Sie einen Kubernetes-Cluster mit AWS CLI

So erstellen und verwalten Sie Kubernetes-Pods unter Linux