Definition

Kubernetes Volume

Was ist ein Kubernetes Volume?

Ein Kubernetes Volume ist ein Verzeichnis, das Daten enthält, auf die die Container in einem bestimmten Pod, der kleinsten einsatzfähigen Einheit in einem Kubernetes-Cluster, zugreifen können. Innerhalb der Container-Orchestrierung und -Verwaltungsplattform Kubernetes stellen Volumes einen Plug-in-Mechanismus dar, der ephemere (flüchtige) Container mit persistenten Datenspeichern verbindet.

Ein Kubernetes-Volume bleibt bestehen, bis der zugehörige Pod gelöscht wird. Wenn ein Pod mit einer eindeutigen Kennung gelöscht wird, wird das mit ihm verbundene Volume zerstört. Wenn ein Pod gelöscht und durch einen identischen Pod ersetzt wird, wird auch ein neues, identisches Volume erstellt.

Wofür wird ein Kubernetes-Volume verwendet?

In Kubernetes ist ein Knoten eine logische Gruppierung von IT-Ressourcen, die zur Ausführung von Container-Workloads verwendet wird. Kubernetes bindet die mit einem bestimmten Pod verbundenen Volumes an den Knoten an, auf dem der Pod läuft. Volumes ermöglichen es Containern, sich über die Infrastruktur hinweg zu bewegen, ohne den Zugriff auf die extern gehosteten Daten zu verlieren, die sie für die Arbeitslast benötigen.

Ein Pod legt fest, auf welche Volumes er zugreift und wo er die Volumes in seinen Containern platziert. Die Daten innerhalb eines Volumes überdauern die im Pod laufenden Container, die als ephemere Einheiten heruntergefahren und neu gestartet werden können. Da ein Container-Absturz nicht ausreicht, um einen Pod von einem Knoten zu trennen, bleiben die Daten in den Volumes sicher, selbst wenn ein Container ausfällt.

Abbildung 1: Obwohl Container-Instanzen selbst ephemer sind, bieten Container-Orchestratoren wie Kubernetes Möglichkeiten zur Implementierung von persistentem Speicher für stateful Anwendungen.
Abbildung 1: Obwohl Container-Instanzen selbst ephemer sind, bieten Container-Orchestratoren wie Kubernetes Möglichkeiten zur Implementierung von persistentem Speicher für stateful Anwendungen.

Volumes können nicht zu anderen Volumes hinzugefügt werden, und es gibt keine Verknüpfungen zwischen Volumes. Kubernetes-Benutzer müssen die Einbindung von Volumes für jeden Container in einem Pod angeben. Eine Darstellung des gewünschten Zustands jedes Pods, einschließlich seiner Volumes, wird im API-Server und im zentralen Controller von Kubernetes gespeichert.

Kubernetes gleicht Bereitstellungen auch mithilfe von kubelet ab, einem Agenten, der auf jedem Knoten in einem Cluster läuft. Kubelet kann zum Beispiel erkennen, ob ein Volume nicht zweimal verwendet werden kann, und melden, dass es nicht sicher verwendet werden kann. Daraufhin werden die Bereitstellungsoptionen mithilfe des Kubernetes Schedulerswiederholt und neu bewertet, bis eine Option gefunden wird, die den Anforderungen entspricht.

Arten von Kubernetes-Volumes

Kubernetes unterstützt viele Arten von Volumes:

  • EmptyDir. Ein üblicher Volume-Typ, der erstellt wird, wenn ein Pod zum ersten Mal einem Knoten zugewiesen wird, der es Benutzern ermöglicht, mehrere Pfade in jedem Container zu mounten. Das Volume ist anfangs leer, wobei alle Container im Pod in der Lage sind, von ihm zu lesen.
  • HostPath. Ein weiterer gängiger Volume-Typ, der ein Verzeichnis aus dem Dateisystem des Host-Knotens in einen Pod einbindet.
  • Lokale Volumes. Diese stellen eingebundene lokale Speichergeräte wie Partitionen, Verzeichnisse oder Festplatten dar.
  • Spezielle Volumes. Diese werden verwendet, um plattformspezifische Volumes in einen Pod zu mounten. Beispiele sind AzureFileVolume und AzureDiskVolume für Microsoft Azure und VsphereVolume für VMware vSphere.

In manchen Situationen ist es hilfreich, ein Volume für mehrere Verwendungen in einem einzigen Pod freizugeben. Mit der Kubernetes-Eigenschaft volumeMounts.subPath können Benutzer einen Unterpfad innerhalb des referenzierten Volumes angeben.

Diese Definition wurde zuletzt im Mai 2023 aktualisiert

Erfahren Sie mehr über Containervirtualisierung