Persistenten Dateisystemspeicher mit einem vorhandenen Dateisystem erstellen

Auf Compute Cloud@Customer können Sie ein PVC in einem vorhandenen Dateisystem bereitstellen.

Mit diesem Verfahren werden ein Mountziel, ein Dateisystem und ein Dateisystemexport erstellt. Anschließend erstellt der Befehl kubectl die Speicherklasse, das persistente Volume und den Persistent Volume Claim.

  1. Mountziel erstellen.

    Anweisungen finden Sie unter Mountziel erstellen.

    Wichtig

    Um sicherzustellen, dass das Mountziel von Worker-Knoten aus erreicht werden kann, erstellen Sie das Mountziel in dem Subnetz, das das unter OKE-Netzwerkressourcen erstellen beschriebene Worker-Subnetz enthält. Stellen Sie sicher, dass der TCP-Port 2049 für den NFS-Server in diesem Subnetz geöffnet ist.

    Beachten Sie die Exportset-OCID und die Mountziel-OCID. Die Exportset-OCID ist erforderlich, um den Dateisystemexport zu erstellen. Die OCID des Mountziels ist erforderlich, um die Speicherklasse in späteren Schritten zu erstellen.

    Pro VCN darf nur ein Mountziel vorhanden sein.

  2. Dateisystem erstellen.

    Anweisungen hierzu finden Sie unter Dateisystem erstellen.

    Sie können nur ein Dateisystem pro VCN erstellen. Sie können mehrere Speicherklassen, Persistent Volumes und Persistent Volume Claims pro Cluster haben, und alle teilen sich ein NFS.

  3. Erstellen Sie einen Dateisystemexport, um das Mountziel mit dem Dateisystem zu verknüpfen.

    Anweisungen finden Sie unter Export für ein Dateisystem erstellen.

    Notieren Sie sich den Exportpfad und die IP-Adresse des Mountziels.

  4. Erstellen Sie eine Speicherklasse, und geben Sie die Mountziel-OCID aus der Ausgabe des Schritts "Mountziel erstellen" an.

    $ kubectl create -f sc.yaml

    Der Inhalt der Datei sc.yaml lautet wie folgt:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: pca-fss
    provisioner: fss.csi.oraclecloud.com
    parameters:
      mntTargetId: ocid1.mounttarget.unique_ID
                

    Die Werte der Eigenschaften apiVersion und provisioner sind Standard. Der Wert des Speicherklassennamens im Metadatenabschnitt ist benutzerdefiniert. Sie können mehrere Speicherklassen pro Mountziel erstellen. Der Speicherklassenname wird in den folgenden Schritten verwendet, um einen Persistent Volume- und Persistent Volume Claim zu erstellen.

    Verwenden Sie den Unterbefehl get sc, um Informationen zur neuen Speicherklasse anzuzeigen:

    $ kubectl get sc
  5. Erstellen Sie ein persistentes Volume mit dem Namen der Speicherklasse, dem Exportpfad und der IP-Adresse des Mountziels.

    Der Name der Speicherklasse befindet sich in den Metadaten in der Datei sc.yaml im vorherigen Schritt. Der Exportpfad und die IP-Adresse des Mountziels werden aus dem Exportschritt "Dateisystem erstellen" ausgegeben. Siehe Schritt 3.

    $ kubectl create -f pv.yaml

    Der Inhalt der Datei pv.yaml lautet wie folgt:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: fss-pv
    spec:
      storageClassName: pca-fss
      capacity:
        storage: 200Gi
      accessModes:
        - ReadWriteMany
      mountOptions:
        - nosuid
      nfs:
        server: mount_target_IP_address
        path: "/export/unique_ID"
        readOnly: false

    Der Name des persistenten Volumes im Abschnitt metadata ist benutzerdefiniert. In einer Speicherklasse können mehrere persistente Volumes vorhanden sein.

    Im Abschnitt nfs ist der Wert server die IP-Adresse des Mountziels, und der Wert path ist der Exportpfad.

    Mit dem Unterbefehl get pv können Sie Informationen zum neuen persistenten Volume anzeigen:

    $ kubectl get pv
    NAME    CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS  CLAIM            STORAGECLASS  REASON  AGE
    fss-pv  200Gi     RWX           Retain          Bound   default/fss-pvc  pca-fss               20h
  6. Erstellen Sie einen Persistent Volume Claim, indem Sie den Persistent Volume-Namen und den Speicherklassennamen angeben.

    Der Name des persistenten Volumes und der Speicherklasse sind in der Ausgabe des Befehls get pv enthalten.

    Warten Sie, bis der PVC-Status "Bound" lautet, bevor Sie diesen Speicher verwenden.

    kubectl create -f pvc.yaml

    Der Inhalt der Datei pvc.yaml lautet wie folgt:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: fss-pvc
    spec:
      storageClassName: pca-fss
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 200Gi
      volumeName: fss-pv

    Der Persistent Volume Claim-Name im Abschnitt metadata ist benutzerdefiniert. Auf einem persistenten Volume können mehrere Persistent Volume Claims vorhanden sein.

    Der Wert der Eigenschaft accessModes muss ReadWriteMany sein.

    Der Wert der Eigenschaft storage muss mindestens 50 Gigabyte betragen.

    Führen Sie den folgenden Befehl aus, um Informationen zum neuen Persistent Volume Claim anzuzeigen:

    $ kubectl get pvc
    NAME      STATUS   VOLUME   CAPACITY   ACCESSMODES   STORAGECLASS   AGE
    fss-pvc   Bound    fss-pv   200Gi      RWX           pca-fss        2h
  7. Verwenden Sie den PVC beim Erstellen anderer Objekte, wie Pods.

    Beispiel: Sie können einen neuen Pod aus der folgenden Poddefinition erstellen, der das System anweist, den fss-pvc-PVC als nginx-Volume zu verwenden, das vom Pod unter /persistent-storage gemountet wird:

    apiVersion: v1
    kind: Pod
    metadata:
      name: fss-dynamic-app
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
          volumeMounts:
            - name: persistent-storage
              mountPath: /usr/share/nginx/html
      volumes:
      - name: persistent-storage
        persistentVolumeClaim:
          claimName: fss-pvc

    Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Pod das neue PVC verwendet:

    $ kubectl describe pod fss-dynamic-app