Persistent Storage im Xelon Kubernetes Service

Wir zeigen kurz, wie Persistent Storage mit Kubernetes Clustern in Xelon HQ funktioniert.

Standardmässig werden die von Containern erzeugten Daten nicht aufbewahrt. Wenn ein Container gelöscht wird, werden auch seine Daten zerstört. Containerisierte Anwendungen, die Datenpersistenz benötigen, brauchen ein Speicher-Backend, das nicht zerstört wird, wenn der Container der Anwendung beendet wird. Aus diesem Grund können Sie mit Xelon HQ einen persistenten Speicher erstellen - einen Dienst, mit dem Ihre Daten außerhalb der Pods gespeichert werden können.


Fügen Sie persistenten Speicher zu Ihrem Cluster hinzu

Auf der Seite für Persistent Storage klicken Sie auf die grüne Schaltfläche Create Persistent Storage. Es öffnet sich ein Assistent, in dem Sie den Namen des persistenten Speichers, sein Volumen (von 5 bis 1000 GB) und die Zuordnung zu einer Organisation und deren Gerät angeben sollten.

persistent storage.png

Wenn alles fertig ist, klicken Sie Deploy Persistent Storage.

deploy PS button.png

It will appear in the list of all Persistent Storages – there you can extend its volume, reattach to another device, or delete.

How to use NFS in Kubernetes

Voraussetzungen:

  • Ein laufendes Kubernetes-Cluster; wir empfehlen v1.18 oder höher.
  • Ein laufender Node mit etwas verfügbarem Speicher.

NFS-Server bereitstellen und konfigurieren

Führen Sie die folgenden Befehle auf Ihre NFS-Server-Node aus:

apt update && apt -y upgradeapt install -y nfs-servermkdir /datacat << EOF >> /etc/exports
/data 192.168.12.0/24(rw,no_subtree_check,no_root_squash)
EOFsystemctl enable --now nfs-serverexportfs -ar

Sie können den NFS-Server auch auf eine clusterfähige Weise mit Unterstützung für hohe Availability bereitstellen.

Dynamic provisioning mit StorageClass

Um Persistent Storage dynamisch mit der StorageClass zu provisionieren, müssen Sie den NFS provisioner installieren. Wir benutzen den nfs-subdir-external-provisioner. Die folgenden Commands installieren alles, was wir brauchen indem das Helm Package verwendet wird:

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisionerhelm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--create-namespace \
--namespace nfs-provisioner \
--set nfs.server=IP_OFF_THE_NFS_NODE \
--set nfs.path=/data
 
Kubernetes mit der NFS StorageClass

​Um den PersistentVolumeClaim zu erstellen, verwenden Sie das folgende Manifest:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-test
labels:
storage.k8s.io/name: nfs
storage.k8s.io/created-by: mstoeckle
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs-client
resources:
requests:
storage: 1Gi

Kubernetes mit der NFS Storage Specification

​NFS hat die folgenden Spezifikationen, die Sie beachten müssen, bevor Sie den NFS-Speicher verwenden:

  • ReadWriteOnce, ReadOnlyMany, ReadWriteMany access modes.
  • Die Speichergrösse spielt dabei keine Rolle.
  • Bei der dynamischen Bereitstellung werden die Datenträger in verschiedene Verzeichnisse aufgeteilt (jedoch ohne Zugriffskontrolle).