Persistenter Speicher

Einrichtung eines persistenten Speichers

Das AI-Labor bietet begrenzten persistenten Speicher, als Block Storage über einen CEPH Cluster an. Dieser Speicherplatz kann in der ICC in Form von Volumes mit festgelegter Größe genutzt werden.

  1. Erzeugen Sie in Ihrem Projekt eine Datei my-pvc.yaml für einen PersistentVolumeClaim mit folgendem Inhalt.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <my-storage-claim>
      namespace: <space-name>
      labels:
        service: haw-world
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Mi
    
    • Ersetzen Sie das Feld <my-storage-claim> mit einem Namen für Ihren PersistentVolumeClaim.
    • Ersetzen Sie das Feld <space-name> mit dem Namen des Spaces, indem der PersistentVolumeClaim angelegt werden soll.
  2. Legen Sie den Claim im Cluster an. Geben Sie dazu den folgenden Befehl in einem Terminal an.

    1
    
    kubectl apply -f my-pvc.yaml
    
  3. Erweitern Sie das Deployment in Ihrer deploy.yaml um die Referenzierung des VolumeClaims und geben Sie den Mountpfad an.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: haw-world
      namespace: <space-name>
      labels:
        service: haw-world
    spec:
      selector:
        matchLabels:
          service: haw-world
      template:
        metadata:
          labels:
            service: haw-world
        spec:
          containers:
            - image: <Pfad aus Container Registry>
              name: haw-world
              volumeMounts:
                - mountPath: "/var/www/html/data"
                  name: my-volume # Hier können Sie einen beliebigen Namen wählen
              ports:
                - containerPort: 80
                  protocol: TCP
          imagePullSecrets:
            - name: <SecretName>
          volumes:
            - name: my-volume
              persistentVolumeClaim:
                claimName: my-storage-claim # Dies ist der Name aus der YAML - Datei
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: haw-world
      namespace: <space-name>
      labels:
        service: haw-world
    spec:
      ports:
        - name: http
          port: 80
          protocol: TCP
          targetPort: 80
      selector:
        service: haw-world
      type: ClusterIP
    

    Beachten Sie, dass der MountPath auf das /var/www/html/data Verzeichnis Ihres Containers gesetzt wird. Damit sind alle Daten innerhalb dieses Verzeichnisses auf dem Volume gespeichert. Ihre Anwendung legt die Zugriffslogs entsprechend in diesem Verzeichnis ab.

  4. Schreiben Sie nun diese Deploymentbeschreibung in den Cluster, führen Sie dazu den folgenden Befehl aus.

    1
    
    kubectl apply -f deploy.yaml
    

    Sobald der Pod zum Deployment erzeugt wird, wird der PersistentVolumeClaim durch Kubernetes an ein PersistentVolume gebunden, welches gegen den CEPH Cluster provisioniert wird. Je nach angeforderter Größe kann die Provisionierung zwischen wenigen Sekunden (< 1GB) bis hin zu mehreren Minuten in Anspruch nehmen.
    Sollten Fehler auftreten, können Sie die Logs mit Hilfe der nachfolgenden Befehle einsehen.

    1
    
    kubectl describe pvc <PVC-name> # Name aus dem vorherigen Schritt
    
  1. Wenn Sie Ihr PVC nicht mehr benötigen, löschen Sie dieses wieder mit dem folgenden Befehl, damit die Ressourcen wieder freigegeben werden.
    1
    
    kubectl delete pvc -f my-pvc.yaml