Bereitstellung von PVCs im Dateispeicher mit Lustre Service

Erfahren Sie, wie Sie Persistent Volume Claims für Cluster bereitstellen, die Sie mit Kubernetes Engine (OKE) erstellt haben, indem Sie Dateisysteme aus dem File Storage mit Lustre-Service mounten.

Der Oracle Cloud Infrastructure File Storage with Lustre-Service ist ein vollständig verwalteter Speicherservice, der den Anforderungen von KI/ML-Training und -Inferenz sowie High Performance Computing gerecht wird. Mit dem Lustre CSI-Plug-in können Sie Cluster mit Dateisystemen im File Storage with Lustre-Service verbinden.

Mit dem File Storage with Lustre-Service können Sie Persistent Volume Claims (PVCs) auf zwei Arten bereitstellen:

  • Definieren und erstellen Sie eine neue Speicherklasse, definieren und erstellen Sie dann ein PVC, das diese Speicherklasse referenziert. Wenn Sie das PVC erstellen, erstellt das Lustre CSI-Plugin dynamisch sowohl ein neues Lustre-Dateisystem als auch ein neues persistentes Volume, das vom neuen Dateisystem unterstützt wird. Siehe PVC mit dem CSI-Volume-Plug-in in einem neuen Lustre File System bereitstellen.
  • Indem Sie manuell ein Dateisystem im File Storage with Lustre-Service erstellen, dann ein persistentes Volume (PV) definieren und erstellen, das vom neuen Dateisystem gesichert wird, und schließlich ein neues PVC definieren. Wenn Sie den PVC erstellen, bindet Kubernetes Engine den PVC an den PV, der vom File Storage with Lustre-Service unterstützt wird. Siehe PVC in einem vorhandenen Lustre File System bereitstellen

Der Lustre CSI-Treiber ist die Gesamtsoftware, mit der Lustre-Dateisysteme über die Container Storage Interface (CSI) mit Kubernetes verwendet werden können. Das Lustre CSI-Plugin ist eine spezifische Komponente innerhalb des Treibers, die für die Interaktion mit dem Kubernetes-API-Server und die Verwaltung des Lebenszyklus von Lustre-Volumes verantwortlich ist.

Beachten Sie Folgendes:

  • Wenn Sie das Lustre CSI-Plug-in zum dynamischen Erstellen eines neuen Dateisystems verwenden, aktualisieren oder löschen Sie das persistente Volume oder die Lustre-Dateisystemobjekte nicht manuell, die das CSI-Plug-in erstellt.
  • Alle Lustre-Dateisysteme, die dynamisch vom CSI-Volume-Plug-in erstellt werden, erhalten Namen, die mit csi-lustre- beginnen.
  • Alle Lustre-Dateisysteme, die dynamisch vom CSI-Volume-Plug-in erstellt werden, werden in der Konsole angezeigt. Verwenden Sie jedoch nicht die Konsole (oder die Oracle Cloud Infrastructure-CLI oder -API), um diese dynamisch erstellten Ressourcen zu ändern. Änderungen an Oracle Cloud Infrastructure-Ressourcen, die dynamisch vom CSI-Volume-Plug-in erstellt werden, werden nicht mit Kubernetes-Objekten abgestimmt.
  • Einige erweiterte Funktionen wie Volume-Erweiterung, Snapshot und Klon sind derzeit nicht für dynamisch bereitgestellte Lustre-Dateisysteme verfügbar.
  • Wenn Sie einen an einen PV gebundenen PVC löschen, der von einem Dateisystem unterstützt wird, das vom CSI-Volume-Plug-in erstellt wurde, und die Rückforderungs-Policy auf "Löschen" gesetzt ist, werden sowohl das PV- als auch das Lustre-Dateisystem gelöscht. Wenn die Rückforderungs-Policy "Beibehalten" lautet, wird der PV nicht gelöscht.
  • Die Verwendung des Lustre CSI-Treibers zum Provisioning eines PVCs in einem dynamisch erstellten Lustre-Dateisystem wird auf Clustern unterstützt, die von Kubernetes Engine erstellt wurden und Kubernetes Version 1.32 oder höher ausführen. Die Verwendung des Lustre CSI-Treibers zum Provisioning eines PVCs in einem vorhandenen Lustre-Dateisystem wird auf Clustern unterstützt, die von Kubernetes Engine erstellt wurden und Kubernetes Version 1.29 oder höher ausführen.
  • Der Lustre CSI-Treiber wird unter Oracle Linux 8 x86 und unter Ubuntu x86 22.04 unterstützt.
  • Um ein Lustre-Dateisystem mit einem von der Kubernetes Engine erstellten Cluster zu verwenden, muss das Lustre-Clientpackage auf Worker-Knoten installiert werden, die das Dateisystem mounten müssen. Weitere Informationen zu Lustre-Clients finden Sie unter Mounten und Zugreifen auf ein Lustre File System.
  • Daten werden im Ruhezustand mit Verschlüsselungsschlüsseln verschlüsselt, die entweder von Oracle oder von Ihnen verwaltet werden.
  • Oracle Cloud Infrastructure File Storage with Lustre ist nur in den Regionen verfügbar, die in der File Storage with Lustre-Dokumentation unter Verfügbarkeit angezeigt werden.

PVC mit dem CSI-Volume-Plug-in auf einem neuen Lustre File System bereitstellen

Hinweis

Die folgenden Voraussetzungen gelten beim Provisioning eines PVCs in einem neuen Lustre-Dateisystem, das dynamisch vom CSI-Volume-Plug-in erstellt wird:
  • Cluster müssen Kubernetes 1.32 oder höher ausführen, um ein PVC auf einem neuen Dateisystem bereitzustellen, das dynamisch vom CSI-Volume-Plug-in erstellt wird.
  • Es müssen entsprechende IAM-Policys vorhanden sein, damit das CSI-Volume-Plug-in Lustre-Ressourcen erstellen und verwalten kann. Beispiel:

    ALLOW any-user to manage lustre-file-family in compartment <compartment-name> where request.principal.type = 'cluster'
    ALLOW any-user to use virtual-network-family in compartment <compartment-name> where request.principal.type = 'cluster'
  • Wenn sich das Compartment, zu dem ein Knotenpool, Subnetz oder Dateisystem gehört, von dem Compartment unterscheidet, zu dem ein Cluster gehört, müssen IAM-Policys vorhanden sein, damit das CSI-Volume-Plug-in auf den entsprechenden Speicherort zugreifen kann. Beispiel:

    ALLOW any-user to manage lustre-file-family in TENANCY where request.principal.type = 'cluster'
    ALLOW any-user to use virtual-network-family in TENANCY where request.principal.type = 'cluster'
  • Um einen bestimmten vom Benutzer verwalteten Masterverschlüsselungsschlüssel aus dem Vault-Service zur Verschlüsselung von Daten im Ruhezustand anzugeben, müssen entsprechende IAM-Policys vorhanden sein, damit der File Storage with Lustre-Service auf diesen Masterverschlüsselungsschlüssel zugreifen kann. Siehe Dateisystemverschlüsselung aktualisieren.

  • Das Lustre-Clientpackage muss auf allen Worker-Knoten installiert sein, die das Lustre-Dateisystem mounten müssen.

So stellen Sie ein PVC dynamisch in einem neuen Lustre-Dateisystem bereit, das dynamisch vom CSI-Volume-Plug-in im File Storage with Lustre-Service erstellt wird:

  1. Erstellen Sie Sicherheitsregeln in einer Netzwerksicherheitsgruppe (empfohlen) oder einer Sicherheitsliste sowohl für das Lustre-Dateisystem als auch für das Worker-Knoten-Subnetz des Clusters.

    Die zu erstellenden Sicherheitsregeln hängen von den relativen Netzwerkverzeichnissen des Lustre-Dateisystems und den Worker-Knoten ab, die als Client fungieren, gemäß den folgenden Szenarios:

    Diese Szenarios, die zu erstellenden Sicherheitsregeln und die Stelle, an der sie erstellt werden sollen, sind in der Dokumentation zum File Storage with Lustre-Service ausführlich beschrieben (siehe Erforderliche VCN-Sicherheitsregeln).

  2. Definieren Sie eine neue Speicherklasse, die den lustre.csi.oraclecloud.com-Provisioner verwendet:
    1. Erstellen Sie eine Manifestdatei (z.B. in einer Datei namens lustre-dyn-st-class.yaml), geben Sie einen Namen für die neue Speicherklasse an, und geben Sie Werte für erforderliche und optionale Parameter an:
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: <storage-class-name>
      provisioner: lustre.csi.oraclecloud.com
      parameters:
        availabilityDomain: <ad-name>
        compartmentId: <compartment-ocid>   # optional
        subnetId: <subnet-ocid>
        performanceTier: <value>
        fileSystemName: <name>               # optional
        kmsKeyId: <key-ocid>                 # optional
        nsgIds: '["<nsg-ocid>"]'             # optional
        rootSquashEnabled: "<true | false>"  # optional
        rootSquashUid: "<value>"             # optional
        rootSquashGid: "<value>"             # optional
        rootSquashClientExceptions: '["<ip-address>"]'   # optional
        oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}'
        oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}'
        setupLnet: "<true | false>"                    # optional
        lustreSubnetCidr: "<cidr-block>"      # optional
        lustrePostMountParameters: '[{"<parameter1>": <value>},{"<parameter2>": <value>}]' # optional

      Hierbei gilt:

      • name: <storage-class-name>: Erforderlich. Ein Name Ihrer Wahl für die Speicherklasse.
      • availabilityDomain: <ad-name>: Erforderlich. Der Name der Availability-Domain, in der das neue Lustre-Dateisystem erstellt werden soll. Beispiel: availabilityDomain: US-ASHBURN-AD-1. Um den zu verwendenden Availability-Domainnamen zu ermitteln, führen Sie den CLI-Befehl oci iam availability-domain list aus (oder verwenden Sie den Vorgang ListAvailabilityDomains). Weitere Informationen finden Sie unter Availability-Domainnamen Ihres Mandanten.
      • compartmentId: <compartment-ocid>: Optional. Die OCID des Compartments, zu dem das neue Lustre-Dateisystem gehören soll. Wenn keine Angabe gemacht wird, wird standardmäßig dasselbe Compartment wie das Cluster verwendet. Beispiel: compartmentId: ocid1.compartment.oc1..aaa______t6q
      • subnetId: <subnet-ocid>: Erforderlich. Die OCID des Subnetzes, in dem das neue Lustre-Dateisystem gemountet werden soll. Beispiel: subnetId: ocid1.subnet.oc1.iad.aaaa______kfa
      • performanceTier: <value>: Erforderlich. Die Performanceebene des Lustre-Dateisystems. Zulässige Werte
        • MBPS_PER_TB_125
        • MBPS_PER_TB_250
        • MBPS_PER_TB_500
        • MBPS_PER_TB_1000
      • fileSystemName: <name>: Optional. Der Name des Lustre-Dateisystems, bis zu 8 Zeichen. Wenn kein Wert angegeben wird, wird ein Standardwert zufällig generiert und verwendet. Beispiel: fileSystemName: aiworkfs
      • kmsKeyId: <key-ocid>: Optional. Die OCID eines von Ihnen verwalteten Masterverschlüsselungsschlüssels, mit dem Daten im Ruhezustand verschlüsselt werden. Wenn keine Angabe gemacht wird, werden die Daten im Ruhezustand mit Verschlüsselungsschlüsseln verschlüsselt, die von Oracle verwaltet werden. Beispiel: kmsKeyId: ocid1.key.oc1.iad.ann______usj
      • nsgIds: '["<nsg-ocid>"]': Optional. Ein JSON-Array mit bis zu fünf Netzwerksicherheitsgruppen-OCIDs, die mit dem Lustre-Dateisystem verknüpft werden sollen. Beispiel: nsgIds: '["ocid1.nsg.oc1.iad.aab______fea"]'
      • rootSquashEnabled: "<true | false>": Optional. Setzen Sie diesen Wert auf true, um den Root-Zugriff von Clients einzuschränken. Standard ist false.
      • rootSquashUid: "<value>": Optional. Wenn Root Squash aktiviert ist, werden Root-Vorgänge dieser UID zugeordnet. Standard ist 65534.
      • rootSquashGid: "<value>": Optional. Wenn Root Squash aktiviert ist, werden Root-Vorgänge dieser GID zugeordnet. Standard ist 65534.
      • rootSquashClientExceptions: '["<ip-address>"]': Optional. Ein JSON-Array mit IP-Adressen oder CIDR-Blöcken, die keinem Root-Squash unterliegen (maximal 10 Einträge). Beispiel: rootSquashClientExceptions: '["10.0.2.4"]'.
      • oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}' Optional. Gibt ein definiertes Tag für das neue Dateisystem an. Beispiel: oci.oraclecloud.com/initial-defined-tags-override: '{"Org": {"CostCenter": "AI"}}'

        Um definierte Tags aus einem Tag-Namespace, der zu einem Compartment gehört, auf eine Dateisystemressource anzuwenden, die zu einem anderen Compartment gehört, müssen Sie eine Policy-Anweisung hinzufügen, damit das Cluster den Tag-Namespace verwenden kann. Siehe Zusätzliche IAM-Policy, wenn sich ein Cluster und ein Tag-Namespace in verschiedenen Compartments befinden.

      • oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}' Optional. Gibt ein Freiformtag für das neue Dateisystem an. Beispiel: oci.oraclecloud.com/initial-freeform-tags-override: '{"Project": "ML"}'
      • setupLnet: "<true | false>": Optional. Setzen Sie diesen Wert auf true, wenn der Lustre CSI-Treiber vor dem Einhängen das Setup von Lustre Network (LNet) durchführen soll. Es wird dringend empfohlen, den Parameter setupLnet einzuschließen und "true" festzulegen.
      • lustreSubnetCidr: "<cidr-block>": Optional. Legen Sie den Quellnetzwerkbereich des Worker-Knotens fest, der für Lustre-Traffic verwendet wird:
        • Verwendungszeitpunkt: Geben Sie nur einen Netzwerkbereich an, wenn Worker-Knoten eine sekundäre VNIC verwenden, um eine Verbindung zum Lustre-Dateisystem herzustellen. Dieses CIDR muss mit dem Subnetzblock dieser sekundären VNIC übereinstimmen (Beispiel: 10.0.2.0/24).
        • Auslassungszeitpunkt: Geben Sie keinen Netzwerkbereich an, wenn Worker-Knoten ihre primäre VNIC (Standardschnittstelle) für Lustre-Konnektivität verwenden.
        • Wichtig: Dieser Parameter unterscheidet sich vom Parameter subnetId des Lustre-Dateisystems, der definiert, wo sich das Lustre-Dateisystem selbst befindet.
      • lustrePostMountParameters: '[{"<parameter1>": <value>},{"<parameter2>": <value>}]': Optional. JSON-Array mit erweiterten Lustre-Clientparametern, die nach dem Einhängen festgelegt werden. Beispiel: lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history": 600}]'

      Beispiel:

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: lustre-dyn-storage
      provisioner: lustre.csi.oraclecloud.com
      parameters:
        availabilityDomain: US-ASHBURN-AD-1
        compartmentId: ocid1.compartment.oc1..aaa______t6q # optional
        subnetId: ocid1.subnet.oc1.iad.aaaa______kfa
        performanceTier: MBPS_PER_TB_250
        fileSystemName: aiworkfs                           # optional
        kmsKeyId: ocid1.key.oc1.iad.ann______usj           # optional
        nsgIds: '["ocid1.nsg.oc1.iad.aab______fea"]'       # optional
        oci.oraclecloud.com/initial-defined-tags-override: '{"Org": {"CostCenter": "AI"}}'
        oci.oraclecloud.com/initial-freeform-tags-override: '{"Project": "ML"}'
        setupLnet: "true"                    # optional
    2. Erstellen Sie die Speicherklasse aus der Manifestdatei, indem Sie Folgendes eingeben:
      kubectl create -f <filename>

      Beispiel:

      kubectl create -f lustre-dyn-st-class.yaml
  3. Erstellen Sie wie folgt eine PVC, die vom neuen Dateisystem im File Storage with Lustre-Service bereitgestellt werden soll:
    1. Erstellen Sie eine Manifestdatei, um den PVC zu definieren:
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: <pvc-name>
      spec:
        accessModes:
          - <ReadWriteMany|ReadOnlyOncePod>
        storageClassName: "<storage-class-name>"
        resources:
          requests:
            storage: <capacity>

      Hierbei gilt:

      • name: <pvc-name>: Erforderlich. Beispiel: lustre-dynamic-claim
      • storageClassName: "<storage-class-name>": Erforderlich. Der Name der zuvor definierten Speicherklasse. Beispiel: lustre-dyn-storage.
      • accessModes: - <ReadWriteMany|ReadOnlyOncePod>: Erforderlich. Gibt an, wie das Dateisystem gemountet und von Pods gemeinsam genutzt werden soll. Derzeit werden ReadWriteMany und ReadOnlyOncePod unterstützt. Beispiel: ReadWriteMany.
      • storage: <capacity>: Erforderlich. Dieser Wert muss mindestens 31.2T (oder 31200G) sein. Sie können eine größere Kapazität angeben, müssen jedoch bestimmte von der Kapazität abhängige Inkremente verwenden (siehe Increasing File System Capacity). Beispiel: 31.2T.

      Beispiel: Die folgende Manifestdatei (mit dem Namen lustre-dyn-claim.yaml) definiert einen PVC namens lustre-dynamic-claim, der vom Dateisystem bereitgestellt wird, das in der Speicherklasse lustre-dyn-storage definiert ist:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: lustre-dynamic-claim
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: "lustre-dyn-storage"
        resources:
          requests:
            storage: 31.2T
    2. Erstellen Sie das PVC aus der Manifestdatei, indem Sie Folgendes eingeben:
      kubectl create -f <filename> 
      Beispiel:
      kubectl create -f lustre-dyn-claim.yaml

    Es entsteht ein neues PVC. Das CSI-Volume-Plug-in erstellt ein neues persistentes Volume (PV) und ein neues Dateisystem im File Storage with Lustre-Service. Das Erstellen eines neuen Lustre-Dateisystems dauert mindestens 10 Minuten und kann je nach Größe des Dateisystems länger dauern. Über die Konsole oder die CLI können Sie bestätigen, dass das neue Lustre-Dateisystem erstellt wurde (siehe Dateisysteme auflisten).

    Das neue PVC ist an die neue PV gebunden. Daten werden im Ruhezustand mit Verschlüsselungsschlüsseln verschlüsselt, die entweder von Oracle oder von Ihnen verwaltet werden.

  4. Prüfen Sie, ob der PVC an das neue Persistent Volume gebunden wurde, indem Sie Folgendes eingeben:

    kubectl get pvc

    Beispielausgabe:

    			
    NAME                   STATUS    VOLUME                    CAPACITY         ACCESSMODES   STORAGECLASS         AGE
    lustre-dynamic-claim   Bound     csi-lustre-<unique_ID>    30468750000Ki    RWX           lustre-dyn-storage   4m
  5. Verwenden Sie das neue PVC, wenn Sie andere Objekte wie Pods erstellen. Beispiel: Sie können einen neuen Pod aus der folgenden Poddefinition erstellen:

    apiVersion: v1
    kind: Pod
    metadata:
      name: lustre-dynamic-app
    spec:
      containers:
        - name: aiworkload
          image: busybox:latest
          command: ["sleep", "3600"]
          volumeMounts:
            - name: lustre-vol
              mountPath: /mnt/lustre
      volumes:
        - name: lustre-vol
          persistentVolumeClaim:
            claimName: lustre-dynamic-claim
  6. Nachdem Sie einen neuen Pod erstellt haben, wie im Beispiel im vorherigen Schritt beschrieben, können Sie prüfen, ob der Pod den neuen PVC verwendet, indem Sie Folgendes eingeben:

    kubectl describe pod lustre-dynamic-app
Tipp

Wenn Sie eine häufige Anforderung zum dynamischen Erstellen neuer PVs und neuer Dateisysteme beim Erstellen von PVCs voraussehen, können Sie angeben, dass die neu erstellte Speicherklasse als Standardspeicherklasse für das Provisioning neuer PVCs verwendet werden soll. Weitere Informationen finden Sie in der Kubernetes-Dokumentation.

Daten im Ruhezustand in einem neuen Lustre File System verschlüsseln

Der File Storage with Lustre-Service verschlüsselt immer Daten im Ruhezustand, wobei standardmäßig von Oracle verwaltete Verschlüsselungsschlüssel verwendet werden. Sie haben jedoch die Möglichkeit, die Verschlüsselung im Ruhezustand mit Ihren eigenen Masterverschlüsselungsschlüsseln anzugeben, die Sie selbst im Vault-Service verwalten.

Je nachdem, wie Sie Daten im Ruhezustand verschlüsseln möchten, befolgen Sie die folgenden Anweisungen:

  • Um mit dem CSI-Volume-Plug-in dynamisch ein neues Lustre-Dateisystem zu erstellen, das von Oracle verwaltete Verschlüsselungsschlüssel verwendet, um Daten im Ruhezustand zu verschlüsseln, führen Sie die Schritte unter PVC auf einem neuen Lustre File System mit dem CSI-Volume-Plug-in bereitstellen aus, und nehmen Sie den Parameter kmsKeyId: <key-ocid> nicht in die Speicherklassendefinition auf. Daten werden im Ruhezustand mit von Oracle verwalteten Verschlüsselungsschlüsseln verschlüsselt.
  • Um mit dem CSI-Volume-Plug-in dynamisch ein neues Lustre-Dateisystem zu erstellen, das Masterverschlüsselungsschlüssel verwendet, die Sie zur Verschlüsselung von Daten im Ruhezustand verwalten, führen Sie die Schritte unter Provisioning durchführen einen PVC in einem neuen Lustre File System mit dem CSI-Volume-Plug-in, nehmen Sie den Parameter kmsKeyId: <key-ocid> in die Speicherklassendefinition auf, und geben Sie die OCID des Masterverschlüsselungsschlüssels im Vault-Service an. Daten werden im Ruhezustand mit dem angegebenen Verschlüsselungsschlüssel verschlüsselt.

PVC auf einem vorhandenen Lustre File System bereitstellen

So erstellen Sie einen PVC in einem vorhandenen Dateisystem im File Storage with Lustre-Service (mit von Oracle verwalteten Verschlüsselungsschlüsseln zur Verschlüsselung von Daten im Ruhezustand):

  1. Erstellen Sie ein Dateisystem im File Storage with Lustre-Service, und wählen Sie die Verschlüsselungsoption Mit von Oracle verwalteten Schlüsseln verschlüsseln aus. Siehe Lustre File System erstellen.
  2. Erstellen Sie Sicherheitsregeln in einer Netzwerksicherheitsgruppe (empfohlen) oder einer Sicherheitsliste sowohl für das Lustre-Dateisystem als auch für das Worker-Knoten-Subnetz des Clusters.
    Die zu erstellenden Sicherheitsregeln hängen von den relativen Netzwerkspeicherorten des Lustre-Dateisystems und den Worker-Knoten ab, die als Client fungieren. Dabei gelten folgende Szenarios:

    Diese Szenarios, die zu erstellenden Sicherheitsregeln und deren Erstellung werden in der Dokumentation zum File Storage with Lustre-Service ausführlich beschrieben (siehe Erforderliche VCN-Sicherheitsregeln).

  3. Erstellen Sie wie folgt eine PV, die vom Dateisystem im File Storage with Lustre-Service gesichert wird:
    1. Erstellen Sie eine Manifestdatei, um eine PV zu definieren, und legen Sie im Abschnitt csi: Folgendes fest:

      • driver bis lustre.csi.oraclecloud.com
      • volumeHandle bis <MGSAddress>@<LNetName>:/<MountName>

        Hierbei gilt:

        • <MGSAddress> ist die Management-Serviceadresse für das Dateisystem im File Storage with Lustre-Service
        • <LNetName> ist der Netzwerkname LNet für das Dateisystem im File Storage with Lustre-Service.
        • <MountName> ist der Mountname, der beim Erstellen des Dateisystems im File Storage with Lustre-Service verwendet wird.

        Beispiel: 10.0.2.6@tcp:/testlustrefs

      • fsType bis lustre
      • (optional, aber empfohlen) volumeAttributes.setupLnet bis "true", wenn der Lustre CSI-Treiber vor dem Mounten des Dateisystems lnet (Lustre Network) einrichten soll.
      • (Optional) volumeAttributes.lustreSubnetCidr zum Quellnetzwerkbereich des Worker-Knotens, der für Lustre-Traffic verwendet wird:
        • Verwendungszeitpunkt: Geben Sie nur einen Netzwerkbereich an, wenn Worker-Knoten eine sekundäre VNIC verwenden, um eine Verbindung zum Lustre-Dateisystem herzustellen. Dieses CIDR muss mit dem Subnetzblock dieser sekundären VNIC übereinstimmen (Beispiel: 10.0.2.0/24).
        • Auslassungszeitpunkt: Geben Sie keinen Netzwerkbereich an, wenn Worker-Knoten ihre primäre VNIC (Standardschnittstelle) für Lustre-Konnektivität verwenden.
        • Wichtig: Dieser Parameter unterscheidet sich vom Parameter subnetId des Lustre-Dateisystems, der definiert, wo sich das Lustre-Dateisystem selbst befindet.
      • (Optional) volumeAttributes.lustrePostMountParameters, um Lustre-Parameter festzulegen. Beispiel:
        ...
            volumeAttributes:
              lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history" :
            600}]'

      Beispiel: Die folgende Manifestdatei (benannt lustre-PV-example.yaml) definiert ein PV namens lustre-pv-example, das von einem Lustre-Dateisystem unterstützt wird:

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: lustre-pv-example
      spec:
        capacity:
          storage: 31.2T
        volumeMode: Filesystem
        accessModes:
          - ReadWriteMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: lustre.csi.oraclecloud.com
          volumeHandle: "10.0.2.6@tcp:/testlustrefs"
          fsType: lustre
          volumeAttributes:
            setupLnet: "true"
    2. Erstellen Sie die PV aus der Manifestdatei, indem Sie Folgendes eingeben:
      kubectl apply -f <filename>

      Beispiel:

      kubectl apply -f lustre-pv-example.yaml
    3. Prüfen Sie, ob die PV erfolgreich erstellt wurde, indem Sie Folgendes eingeben:

      kubectl get pv <pv-name>

      Beispiel:

      kubectl get pv lustre-pv-example

      Beispielausgabe:

      
      NAME                CAPACITY        ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM   STORAGECLASS   REASON   AGE
      lustre-pv-example   30468750000Ki   RWX            Retain           Bound                                    56m
      
  4. Erstellen Sie wie folgt ein PVC, das von der von Ihnen erstellten PV bereitgestellt wird:
    1. Erstellen Sie eine Manifestdatei, um das PVC zu definieren und festzulegen:
      • storageClassName zu "" Beachten Sie, dass Sie einen leeren Wert für storageClassName angeben müssen, auch wenn die Speicherklasse beim statischen Provisioning des persistenten Speichers nicht anwendbar ist. Wenn Sie keinen leeren Wert für storageClassName angeben, wird die Standardspeicherklasse (oci-bv) verwendet, die einen Fehler verursacht.
      • volumeName für den Namen des von Ihnen erstellten PV (Beispiel: lustre-pv-example)

      Beispiel: Die folgende Manifestdatei (benannt lüster-PVC-example.yaml) definiert ein PVC namens lustre-pvc-example, das an ein PV namens lustre-pv-example gebunden wird:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: lustre-pvc-example
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: ""
        volumeName: lustre-pv-example
        resources:
          requests:
            storage:  31.2T

      Beachten Sie, dass das Element requests: storage: in der Manifestdatei des PVC vorhanden sein muss und sein Wert mit dem Wert übereinstimmen muss, der für das Element capacity: storage: in der Manifestdatei des PV angegeben wurde. Abgesehen davon wird der Wert des Elements requests: storage: ignoriert.

    2. Erstellen Sie den PVC aus der Manifestdatei, indem Sie Folgendes eingeben:
      kubectl apply -f <filename>
      Beispiel:
      kubectl apply -f lustre-pvc-example.yaml
    3. Prüfen Sie, ob der PVC erfolgreich erstellt und an den PV gebunden wurde, indem Sie:

      kubectl get pvc <pvc-name>

      Beispiel:

      kubectl get pvc lustre-pvc-example

      Beispielausgabe:

      
      NAME                    STATUS   VOLUME              CAPACITY         ACCESS MODES   STORAGECLASS   AGE
      lustre-pvc-example      Bound    lustre-pv-example   30468750000Ki    RWX                           57m

    Das PVC ist an das PV gebunden, das durch das File Storage with Lustre Service-Dateisystem gesichert wird. Die Daten werden im Ruhezustand mit von Oracle verwalteten Verschlüsselungsschlüsseln verschlüsselt.

  5. Verwenden Sie das neue PVC, wenn Sie andere Objekte wie Deployments erstellen. Beispiel:
    1. Erstellen Sie wie folgt ein Manifest namens lustre-app-example-deployment.yaml, um ein Deployment namens lustre-app-example-deployment zu definieren, das den PVC lustre-pvc-example verwendet:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: lustre-app-example-deployment
      spec:
        selector:
          matchLabels:
            app: lustre-app-example
        replicas: 2
        template:
          metadata:
            labels:
              app: lustre-app-example
          spec:
            containers:
            - args:
              - -c
              - while true; do echo $(date -u) >> /lustre/data/out.txt; sleep 60; done
              command:
              - /bin/sh
              image: busybox:latest
              imagePullPolicy: Always
              name: lustre-app-example
              volumeMounts:
              - mountPath: /lustre/data
                name: lustre-volume
            restartPolicy: Always
            volumes:
            - name: lustre-volume
              persistentVolumeClaim:
                claimName: lustre-pvc-example
    2. Erstellen Sie das Deployment aus der Manifestdatei, indem Sie Folgendes eingeben:
      kubectl apply -f lustre-app-example-deployment.yaml
    3. Prüfen Sie, ob die Deployment-Pods erfolgreich erstellt wurden und ausgeführt werden, indem Sie Folgendes eingeben:
      kubectl get pods

      Beispielausgabe:

      NAME                                             READY   STATUS              RESTARTS   AGE
      lustre-app-example-deployment-7767fdff86-nd75n   1/1     Running             0          8h
      lustre-app-example-deployment-7767fdff86-wmxlh   1/1     Running             0          8h

PVC auf einem vorhandenen Lustre File System mit Mount-Optionen bereitstellen

Sie können die Performance optimieren und den Zugriff auf ein vorhandenes Lustre-Dateisystem steuern, indem Sie Mount-Optionen für das PV angeben. Durch die Angabe von Mountoptionen können Sie die Interaktion von Pods mit dem Dateisystem optimieren.

So schließen Sie Einhängeoptionen ein:

  1. Befolgen Sie zunächst die Anweisungen unter Provisioning eines PVC auf einem vorhandenen Lustre File System.
  2. Fügen Sie im PV-Manifest, das unter Provisioning eines PVC auf einem vorhandenen Lustre File System beschrieben wird, das Feld spec.mountOptions hinzu, mit dem Sie angeben können, wie der PV von Pods gemountet werden soll.

    Beispiel: In der Manifestdatei lustre-pv-example.yaml, die unter Provisioning eines PVCs auf einem vorhandenen Lustre File System angezeigt wird, können Sie das Feld mountOptions wie folgt aufnehmen:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: lustre-pv-example
    spec:
      capacity:
        storage: 31.2T
      volumeMode: Filesystem
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      mountOptions:
        - ro 
      csi:
        driver: lustre.csi.oraclecloud.com
        volumeHandle: "10.0.2.6@tcp:/testlustrefs"
        fsType: lustre
        volumeAttributes:
          setupLnet: "true"

    In diesem Beispiel ist das Feld mountOptions auf ro gesetzt. Dies gibt an, dass Pods schreibgeschützten Zugriff auf das Dateisystem haben sollen. Weitere Informationen zu PV-Mountoptionen finden Sie unter Persistente Volumes in der Kubernetes-Dokumentation.

Daten im Ruhezustand in einem vorhandenen Lustre File System verschlüsseln

Der File Storage with Lustre-Service verschlüsselt Daten immer im Ruhezustand und verwendet standardmäßig von Oracle verwaltete Verschlüsselungsschlüssel. Sie haben jedoch die Möglichkeit, die Verschlüsselung im Ruhezustand mit Ihren eigenen Masterverschlüsselungsschlüsseln anzugeben, die Sie im Vault-Service selbst verwalten.

Weitere Informationen zu File Storage with Lustre-Dateisystemen, die von Oracle verwaltete Verschlüsselungsschlüssel oder Ihre eigenen Masterverschlüsselungsschlüssel verwenden, die Sie selbst verwalten, finden Sie unter Dateisystemverschlüsselung aktualisieren.