Persistente Volumes in Kubernetes vergrößern

Persistente Volumes in Kubernetes vergrößern

Du willst ein PersistentVolume (PV) in Kubernetes vergrößern? In diesem Blogeintrag erfährst du wie das funktioniert. Was PVs sind und wie man diese anlegt wird im Tutorial Persistente Volumes in Kubernetes erstellen erklärt, auf welchem das vorliegende Tutorial aufbaut.  

PV in K8s vergrößern: Los Geht’s

Das Vergrößern eines PVs in Kubernetes ist keine schwere Übung. Zu beachten gilt es, dass das PersistentVolumeClaim und nicht das PersistentVolume-Objekt editiert werden muss. Das PVC-Objekt kann z.B. mit dem Befehl kubectl edit angepasst werden. Falls du das oben angesprochene Tutorial absolviert hast, sollte in deinem Cluster ein PVC-Objekt mit dem Namen nginx-documentroot existieren. Dieses wollen wir von 1 GiB auf 5 GiB vergrößern. 

$ kubectl edit pvc nginx-documentroot

Im nun geöffneten Editor kann man das Yaml-Manifest des PVC-Objekts bearbeiten. Zum Vergrößern passt man den Wert unter .spec.resources.requests.storage an. Nach dem Speichern und Schließen des Editors erfolgt die Vergrößerung des Volumes. Die standardmäßig in NWS Managed Kubernetes Clustern verwendete Cinder-StorageClass unterstützt Online Expansion, d.h. das Filesystem auf dem Volume wird auch bei laufendem Pod vergrößert und der zusätzliche Speicherplatz ist direkt im Container verfügbar. Es ist also kein Neustart des Pods notwendig. Eine Verkleinerung eines PVs ist nicht möglich. Die Kubernetes-API lässt dies gar nicht erst zu. Um zu überprüfen, ob der Resize erfolgreich vollzogen wurde, kannst du dir zum Schluss noch das zum PVC gehörige PV anzeigen lassen: Das PV-Objekt wurde aktualisiert und spiegelt die neue Größe von 5 GiB des zugrundeliegenden Volumes wider. Um sich vollends davon zu überzeugen, dass der zusätzliche Speicherplatz zur Verwendung im Container bereitsteht, öffnet man eine Shell auf dem Container mit kubectl exec:  

Weitere Hilfreiche Informationen

Du hast nun gesehen, wie sich ein bestehendes PV vergrößern lässt. Damit du den Füllstand der Volumes in deinem Cluster immer im Blick hast, lohnt es sich zum Zweck des Monitorings den Kube Prometheus Stack einzusetzen. Wenn du benachrichtigt werden willst, wenn ein Volume eine kritische Speicherbelegung erreicht, könnte das Tutorial Kubernetes Alerting mit Prometheus Alertmanager interessant für dich sein.