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

Einführung in persistente Kubernetes-Volumes

Einführung

Kubernetes ist eine der beliebtesten Orchestrierungslösungen zum Hosten von Containern in einer Produktionsumgebung. Die Plattform ermöglicht es Benutzern, die Bereitstellung zahlreicher Instanzen einer Anwendung zu automatisieren und gleichzeitig je nach Bedarf hoch- und herunterzuskalieren.

Aufgrund der Volatilität von Kubernetes-Pods mussten Speichervolumen jedoch mit einem völlig neuen Ansatz aufgelöst werden.

In diesem Artikel wird erläutert, was persistente Kubernetes-Volumes sind und warum sie so wichtig sind.

Was sind persistente Kubernetes-Volumes

Persistente Kubernetes-Volumes sind vom Benutzer bereitgestellte Speichervolumes, die einem Kubernetes-Cluster zugewiesen sind. Der Lebenszyklus persistenter Volumes ist unabhängig von Pods, die es verwenden. Daher eignen sich persistente Volumes perfekt für Anwendungsfälle, in denen Sie Daten unabhängig vom unvorhersehbaren Lebensprozess von Kubernetes-Pods aufbewahren müssen.

Ohne persistente Volumes wäre es unmöglich, so häufige Dienste wie eine Datenbank zu verwalten. Immer wenn ein Pod ersetzt wird, gehen die während des Lebenszyklus dieses Pods gewonnenen Daten verloren. Dank persistenter Volumes befinden sich die Daten jedoch in einem konsistenten Zustand.

Arten von Kubernetes-Volumes

Um zu verstehen, was persistente Volumes sind, müssen wir zunächst erklären, wie sich Volume-Typen unterscheiden. Es gibt verschiedene Arten von Volumes, die Sie in einem Kubernetes-Pod verwenden können:

  1. Knotenlokaler Speicher (emptyDir und hostPath )
  2. Cloud-Volumes (z. B. awsElasticBlockStore , gcePersistentDisk , und azureDiskVolume )
  3. File-Sharing-Volumes wie Network File System (nfs )
  4. Verteilte Dateisysteme (z. B. cephfs , rbd , und glusterfs )
  5. Spezielle Volume-Typen wie PersistentVolumeClaim , secret und gitRepo

Beide emptyDir und hostPath sind an den Pod angeschlossen und entweder im RAM oder im dauerhaften Speicher auf einem Laufwerk gespeichert. Da sie vom Pod abhängen, sind ihre Inhalte verfügbar, solange der Pod läuft. Wenn es ausfällt, gehen die Daten verloren.

Mit Cloud-Volumes , nfs und PersistentVolumeClaim , das Volume ist unabhängig und wird außerhalb des Pods platziert. Obwohl sie im Wesentlichen alle darauf ausgelegt sind, Daten aufzubewahren, sind Cloud-Volumes sind deutlich schwieriger zu handhaben. Um den Pod mit dem Anbieter zu verbinden, muss der Benutzer viele Speicherdetails kennen.

Netzwerkdateisysteme und persistente Volumes sind viel praktischer. Tatsächlich funktionieren diese beiden Volume-Typen nach denselben Prinzipien.

NFS ermöglicht es Ihnen, sich über yaml mit einem Volume zu verbinden Datei. Ohne den Pod wird der Inhalt des Volumes ausgehängt, bleibt aber verfügbar. Aber auch für NFS-Setups müssen Sie einen Persistent Volume Claim (PVC) senden Anfrage.

Daher sind Persistent Volume Claims die Kernlösung für persistente Volumes in Kubernetes.

Was sind Persistent Volume Claims

Persistent Volume Claims sind Objekte, die über eine Reihe von Abstraktionen eine Verbindung zu Back-End-Speichervolumes herstellen. Sie fordern die Speicherressourcen an, die Ihre Bereitstellung benötigt.

Der Hauptvorteil besteht darin, dass PVCs viel benutzerfreundlicher sind, sodass Entwickler sie verwenden können, ohne zu viele Details der Cloud-Umgebung kennen zu müssen, mit der sie sich verbinden. Der Administrator listet die vollständigen Anspruchsdetails im PVC auf, aber der Pod selbst benötigt nur einen Link, um darauf zuzugreifen.

Daher enthält ein Pod, der ein persistentes Volume verwendet, auch eine Reihe abstrakter Schichten zwischen ihm und dem Speicher.

Persistente Volumes verwenden

Um einen Pod mit einem persistenten Volume zu binden, muss er Volume-Mounts und einen persistenten Volume-Claim (PVC) enthalten. Diese Ansprüche ermöglichen es Benutzern, ein persistentes Volume in einem Pod bereitzustellen, ohne die Details der Cloud-Umgebung kennen zu müssen.

Im Persistent Volume Claim geben Benutzer an, wie groß der Speicher sein soll, den Selektor, der auf das entsprechende PV verweist, und die Speicherklasse. Die Speicherklasse bezieht sich auf die Art der Bereitstellung, ob statisch oder dynamisch.

Statische Bereitstellung ist eine Funktion, bei der Administratoren vorhandene Speichergeräte nutzen und sie Clusterbenutzern zur Verfügung stellen. Der Cluster-Administrator erstellt mehrere persistente Volumes, die zur Nutzung verfügbar sind und in der Kubernetes-API vorhanden sind.

Dynamische Bereitstellung tritt auf, wenn keines der statischen persistenten Volumes mit dem PVC übereinstimmt. In diesem Fall basiert die Bereitstellung auf Speicherklassen, die von Administratoren erstellt und konfiguriert werden.

Der Lebenszyklus persistenter Volumes

Sobald Sie das PVC löschen, entbinden Sie das PV von seinem Anspruch. Je nach festgelegter Rückforderungsrichtlinie wird das Volume entweder aufbewahrt, recycelt oder gelöscht.

  • Wenn Sie die Rückforderungsrichtlinie auf Beibehalten setzen , das Volumen im Speicher bleibt auch nach der Freistellung von der Inanspruchnahme erhalten.
  • Alternativ können Sie es recyceln das Volume, das den darin enthaltenen Inhalt löscht und für andere PVCs verfügbar macht.
  • Wenn die Rückforderungsrichtlinie zum Löschen konfiguriert ist sobald es vom PVC getrennt wird, bedeutet dies, dass das Volume und der Speicher vollständig entfernt werden.

So erstellen Sie ein persistentes Volume

1. Um ein persistentes Volume zu erstellen, erstellen Sie zunächst eine .yaml Datei im Editor Ihrer Wahl. In diesem Beispiel nennen wir die Datei example-pv.yaml und bearbeiten Sie es mit dem Nano-Editor:

nano example-pv.yaml

2. Fügen Sie der Datei folgenden Inhalt hinzu:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: [pv_name]
spec:
capacity:
  storage: 10Gi
accessModes:
  - ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
mountPath: [path of where the volume is accessible from within the container]
volumeID: [your_volume_id]

3. Ersetzen Sie die Angaben von name , storage , mountpath und volumeID mit Ihren respektierten Werten.

4. Speichern und beenden Sie die Datei.

5. Stellen Sie dann das persistente Volume bereit, indem Sie den folgenden Befehl mit dem Namen der .yaml-Datei verwenden, die Sie im vorherigen Schritt erstellt haben:

kubectl create -f example-pv.yaml

So erstellen Sie einen Persistent Volume Claim

Wie beim PV erstellen Sie einen PVC mit einer .yaml Datei bestehend aus folgendem Inhalt:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: [pvc_name]
spec:
  storageClassName: manual
  selector:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Wenn der Inhalt hinzugefügt ist, speichern und beenden Sie die Datei.

Nachdem Sie das persistente Volume und den Anspruch auf das persistente Volume eingerichtet und konfiguriert haben, können Sie den PVC im erforderlichen Pod angeben.


Ubuntu
  1. Wie erstelle ich einen persistenten USB-Stick?

  2. Eine Einführung in Docker

  3. Einführung in Docker-Images

  4. Einführung in Docker

  5. Einführung in iptables

So stellen Sie Elasticsearch auf Kubernetes bereit

So installieren Sie Kubernetes unter Ubuntu 18.04

Docker vs. Kubernetes

So konfigurieren Sie ein NFS-basiertes persistentes Volume in Kubernetes

So installieren Sie Kubernetes unter Ubuntu 20.04

Eine Einführung in Ansible-Fakten