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):
- 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.
- 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).
- Erstellen Sie wie folgt eine PV, die vom Dateisystem im File Storage with Lustre-Service gesichert wird:
-
Erstellen Sie eine Manifestdatei, um eine PV zu definieren, und legen Sie im Abschnitt
csi:
Folgendes fest:driver
bislustre.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
bislustre
- (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 SievolumeAttributes.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"
- Erstellen Sie die PV aus der Manifestdatei, indem Sie Folgendes eingeben:
kubectl apply -f <filename>
Beispiel:
kubectl apply -f lustre-pv-example.yaml
-
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
-
- Erstellen Sie wie folgt ein PVC, das von der von Ihnen erstellten PV bereitgestellt wird:
- Erstellen Sie eine Manifestdatei, um das PVC zu definieren und festzulegen:
storageClassName
zu""
Beachten Sie, dass Sie einen leeren Wert fürstorageClassName
angeben müssen, auch wenn die Speicherklasse beim statischen Provisioning des persistenten Speichers nicht anwendbar ist. Wenn Sie keinen leeren Wert fürstorageClassName
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 namenslustre-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 Elementcapacity: storage:
in der Manifestdatei des PV angegeben wurde. Abgesehen davon wird der Wert des Elementsrequests: storage:
ignoriert. - Erstellen Sie das PVC aus der Manifestdatei, indem Sie Folgendes eingeben:
kubectl apply -f <filename>
Beispiel:kubectl apply -f lustre-pvc-example.yaml
-
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.
- Erstellen Sie eine Manifestdatei, um das PVC zu definieren und festzulegen:
- Verwenden Sie das neue PVC, wenn Sie andere Objekte wie Deployments erstellen. Beispiel:
- Erstellen Sie wie folgt ein Manifest namens lustre-app-example-deployment.yaml, um ein Deployment namens
lustre-app-example-deployment
zu definieren, das den PVClustre-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
- Erstellen Sie das Deployment aus der Manifestdatei, indem Sie Folgendes eingeben:
kubectl apply -f lustre-app-example-deployment.yaml
- 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
- Erstellen Sie wie folgt ein Manifest namens lustre-app-example-deployment.yaml, um ein Deployment namens
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:
- Befolgen Sie zunächst die Anweisungen unter PVC in einem vorhandenen Dateisystem bereitstellen.
- 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
aufro
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.