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 Service File Storage with Lustre können Sie Persistent Volume Claims (PVCs) bereitstellen, indem Sie manuell ein Dateisystem im Service File Storage with Lustre erstellen, dann ein Persistent Volume (PV) definieren und erstellen, das vom neuen Dateisystem unterstützt wird, und schließlich ein neues PVC definieren. Wenn Sie das PVC erstellen, bindet die Kubernetes Engine das PVC an das PV, das vom File Storage mit Lustre-Service unterstützt wird.

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:

  • Der Lustre CSI-Treiber wird auf Clustern unterstützt, die von der Kubernetes-Engine erstellt wurden und auf denen Kubernetes-Version 1.29 oder höher ausgeführt wird.
  • 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.

PVC auf einem vorhandenen Dateisystem 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 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).

  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 CIDR-Block des Subnetzes, in dem sich die sekundäre VNIC des Worker-Knotens befindet, um sicherzustellen, dass der Worker-Knoten über Netzwerkkonnektivität zum Lustre-Dateisystem verfügt. Beispiel: 10.0.2.0/24.

        Hinweis

        Geben Sie volumeAttributes.lustreSubnetCidr nicht an, wenn Sie die Standardschnittstelle des Worker-Knotens (die primäre VNIC) für die Verbindung mit dem Lustre-Dateisystem verwenden.
      • (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: 31Ti
        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      m31Ti      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:  31Ti

      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 das 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       31Ti      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

Provisioning von PVC auf einem vorhandenen Dateisystem mit Mountoptionen

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 PVC in einem vorhandenen Dateisystem bereitstellen.
  2. Fügen Sie im PV-Manifest, das unter PVC in einem vorhandenen Dateisystem bereitstellen beschrieben wird, das Feld spec.mountOptions hinzu, mit dem Sie angeben können, wie das PV von Pods gemountet werden soll.

    Beispiel: In der Manifestdatei lustre-pv-example.yaml, die unter PVC in einem vorhandenen Dateisystem bereitstellen angezeigt wird, können Sie das Feld mountOptions wie folgt einschließen:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: lustre-pv-example
    spec:
      capacity:
        storage: 31Ti
      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.

Data-at-Rest in einem vorhandenen Dateisystem 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.

Weitere Informationen zum Erstellen von File Storage mit 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.