Microk8s Persistent Volumes

Permanenter Speicher

Bei jedem Deployment wird das Dateisystem des Pods gelöscht und neu erstellt.

Damit das Dateisystem erhalten bleibt, benötigen wir ein Persistent Volume sowie ein Persistent Volume Claim für den Pod

Storage Klasse (custom)

  apiVersion: storage.k8s.io/v1
  kind: StorageClass
  metadata:
    name: custom
  provisioner: kubernetes.io/no-provisioner
  volumeBindingMode: WaitForFirstConsumer

Persistent Volume

Ich brauche warum auch immer 2 Ingresses, einen für /ws2 und einen für /ws2/socket.io

Erstellt ein persistentes Volume von 5G auf dem lokalen Dateisystem.

  kind: PersistentVolume
  apiVersion: v1
  metadata:
    name: custom-default-backend
    labels:
      type: local
  spec:
    storageClassName: custom
    capacity:
     storage: 5Gi
    accessModes:
      - ReadWriteOnce
    hostPath:
      path: "/mnt/data/custom-default-backend"
      type: DirectoryOrCreate

Persistent Volume Claim

Stellt pro Claim (Anforderung) 1G für jeden Pod im Volume bereit

  apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    name: custom-default-backend-pvc
  spec:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 1Gi
    storageClassName: custom

Deployment Volume Mounts

Im Deployment kann wird festgelegt auf welche Pfade das persitente Volume gemountet wird.

Beispiel Deployment:

volumeMounts:
- name: nginx-configs
  mountPath: /etc/nginx/conf.d
- name: docroot
  mountPath: /usr/share/nginx/html
# Load the configuration files for nginx
volumes:
- name: nginx-configs
  configMap:
    name: nginx-config
- name: docroot
  persistentVolumeClaim:
    claimName: custom-default-backend-pvc
    readOnly: false