2019
März
15
2019

Persistent Volumes in Kubernetes mit CSI

Auch wenn die Abkürzung im ersten Moment an eine amerikanische TV-Serie erinnert: Dank Unterstützung des "Container Storage Interface" (CSI) bieten wir als einer der ersten Anbieter weltweit eine ebenso elegante wie flexible Lösung, um in einem Kubernetes-Setup persistenten Speicher zu nutzen.

Weshalb immer mehr unserer Kunden Kubernetes nutzen

Es gibt verschiedene Gründe, Anwendungen oder Microservices in Container wie z.B. Docker zu packen. Beispiele dafür sind die saubere Trennung oder unabhängige Deployments einzelner Services. Da die Container-Virtualisierung im Unterschied zu vollvirtualisierten Maschinen kaum Overhead verursacht, verbraucht selbst eine feingranulare Separierung von Services in Containern nur unwesentlich mehr Ressourcen.

Bei der Verwaltung solcher Container hilft Kubernetes (oder "K8s") als Orchestrierungs-Lösung. So startet es alle benötigten Container in der gewünschten Anzahl und verteilt sie auf die verfügbaren Nodes. Fällt ein Container aus, wird er automatisch auf einem geeigneten Node neu gestartet. Nicht zuletzt lässt sich Kubernetes über Config-Files und Scripts steuern und dadurch optimal in Konfigurationsmanagement-Systeme integrieren.

Wie CSI den "Self-Service" für Storage ermöglicht

Standardmässig haben solche Container einen flüchtigen Speicher, d.h. Änderungen im Dateisystem eines Containers gehen bei einem Neustart verloren. Selbstverständlich können auch sogenannte "Persistent Volumes" erstellt und an einen Container durchgereicht werden. Bisher war dies jedoch typischerweise mit manuellem Aufwand sowie der Kopplung an einen bestimmten Node verbunden und passte deshalb nicht so recht in ein dynamisches Container-Konzept.

Mit dem kürzlich verabschiedeten "Container Storage Interface" (CSI) gibt es nun einen definierten Standard, um aus einem "Persistent Volume Claim" automatisch ein passendes Volume erstellen zu lassen. Dieses wird dann gleich im richtigen Container gemountet – egal, auf welchem Node der Container läuft. Selbstverständlich kann das Volume auch an einen anderen Container umgehängt und bei Bedarf direkt aus Kubernetes heraus wieder gelöscht werden.

Welche Vorteile CSI bei cloudscale.ch sonst noch bietet

Wie von unseren Volumes für Cloud-Server gewohnt basieren auch Persistent Volumes für Kubernetes auf blitzschnellem SSD-only Speicher und können praktisch beliebig gross sein. Bei einem Platzbedarf ab 100 GB steht zudem günstiger Massenspeicher zur Verfügung. Die Auswahl erfolgt direkt im Persistent Volume Claim mit dem Parameter "storageClassName" (cloudscale-volume-ssd bzw. cloudscale-volume-bulk).

Als Zusatz-Funktion bieten wir zudem die Festplattenverschlüsselung (Full Disk Encryption) mit LUKS an. Verschlüsselte Volumes werden ganz einfach mit einem speziellen storageClassName angelegt und können nur verwendet werden, wenn in Kubernetes ein Abschnitt mit dem passenden Verschlüsselungs-Key konfiguriert wird – ein potenzieller Angreifer ohne diesen Key sieht nur Datenmüll. Ob zusätzlich verschlüsselt oder nicht: auch Persistent Volumes für Kubernetes werden bei cloudscale.ch ausschliesslich in Rechenzentren mit Standort Schweiz gespeichert.


Für Ihre ersten eigenen Schritte empfehlen wir Ihnen Rancher zur einfachen Installation eines Basis-Setups mit Kubernetes. Anschliessend installieren Sie nur noch den cloudscale.ch CSI-Treiber von GitHub und hinterlegen einmalig ein API-Token aus dem Cloud Control Panel. Diverse Konfigurations-Beispiele für Container und Volumes finden Sie selbstverständlich ebenfalls auf GitHub.

Leinen los!
Ihr cloudscale.ch-Team

Zurück zur Übersicht