In dieser Anleitung wird beschrieben, wie Sie mit dem Managed Lustre-CSI-Treiber eine Verbindung zu einer vorhandenen Managed Lustre-Instanz herstellen. So können Sie auf vorhandene Managed Lustre-Instanzen als Volumes für Ihre zustandsorientierten Arbeitslasten auf kontrollierte und vorhersehbare Weise zugreifen.
Unterstützung für mehrere NICs für Hochleistungsnetzwerke
Für GKE-Cluster mit Version 1.35.2-gke.1842000 oder höher ist der Managed Lustre-CSI-Treiber standardmäßig aktiviert, um alle verfügbaren Netzwerkschnittstellenkarten (Network Interface Cards, NICs) für einen höheren Durchsatz zu verwenden. Diese Unterstützung aggregiert die Bandbreite, indem der TCP-Speichertraffic auf die Netzwerkschnittstellen verteilt wird.
Damit die Unterstützung für mehrere NICs verwendet werden kann, müssen Ihre Knoten die folgenden Anforderungen erfüllen:
- Standard-NICs für TCP: Ihre Knoten müssen Standard-NICs wie die virtuelle Google-NIC (gVNIC) oder VirtIO-Net verwenden, um den TCP-Speichertraffic zu verarbeiten.
- Gleiches VPC-Netzwerk:Alle Standard-NICs müssen sich im selben VPC-Netzwerk befinden.
- RDMA-Überlegungen:An Ihre Knoten können auch RDMA-NICs angehängt sein. Der Managed Lustre-CSI-Treiber verwendet jedoch nur die Standard-NICs für den TCP-Speichertraffic.
Informationen zum Deaktivieren der Unterstützung für mehrere NICs finden Sie unter Unterstützung für mehrere NICs für Lustre deaktivieren.
Lustre-Kommunikationsports
Der GKE Managed Lustre-CSI-Treiber verwendet je nach GKE-Clusterversion und vorhandenen Managed Lustre-Konfigurationen unterschiedliche Ports für die Kommunikation mit Managed Lustre-Instanzen.
Standardport (empfohlen) : Für neue GKE-Cluster mit Version
1.33.2-gke.4780000oder höher verwendet der Treiber standardmäßig Port988für die Lustre-Kommunikation.Legacy-Port:Verwenden Sie Port
6988, indem Sie den Befehlengcloudin den folgenden Szenarien das Flag--enable-legacy-lustre-portanhängen:- Frühere GKE-Versionen:Wenn auf Ihrem GKE-Cluster eine Version vor
1.33.2-gke.4780000ausgeführt wird, umgeht das Flag--enable-legacy-lustre-porteinen Portkonflikt mit demgke-metadata-serverauf GKE-Knoten. - Vorhandene Lustre-Instanzen:Wenn Sie eine Verbindung zu einer vorhandenen Managed Lustre-Instanz herstellen, die mit dem Flag
gke-support-enablederstellt wurde, müssen Sie unabhängig von Ihrer Clusterversion weiterhin--enable-legacy-lustre-portin Ihregcloud-Befehle einfügen. Ohne dieses Flag kann Ihr GKE-Cluster die vorhandene Lustre-Instanz nicht bereitstellen. Informationen zum Flaggke-support-enabledfinden Sie in der Beschreibung der optionalen Flags unter Instanz erstellen.
- Frühere GKE-Versionen:Wenn auf Ihrem GKE-Cluster eine Version vor
Sie können die neuen und vorhandenen Cluster so konfigurieren, dass entweder der Standardport 988 oder der Legacy-Port 6988 verwendet wird.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Cloud Managed Lustre API und die Google Kubernetes Engine API. APIs aktivieren
- Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
- Informationen zu Einschränkungen und Anforderungen finden Sie unter Informationen zum Google Cloud Managed Lustre-CSI-Treiber.
- Achten Sie darauf, dass der Managed Lustre-CSI-Treiber aktiviert ist. Er ist in Standard- und Autopilot-Clustern standardmäßig deaktiviert.
Umgebungsvariablen einrichten
Richten Sie die folgenden Umgebungsvariablen ein:
export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE
Ersetzen Sie Folgendes:
CLUSTER_NAME: Der Name des Clusters.PROJECT_ID: Ihre Google Cloud Projekt-ID.LUSTRE_NETWORK: Das freigegebene Virtual Private Cloud-Netzwerk, in dem sich sowohl der GKE-Cluster als auch die Managed Lustre-Instanz befinden.ZONE: Die geografische Zone Ihres GKE-Cluster, z. B.us-central1-a.
Managed Lustre-CSI-Treiber konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie den Managed Lustre-CSI-Treiber aktivieren und deaktivieren.
Managed Lustre-CSI-Treiber auf einem neuen GKE-Cluster aktivieren
In den folgenden Abschnitten wird beschrieben, wie Sie den Managed Lustre-CSI-Treiber auf einem neuen GKE-Cluster aktivieren.
Standardport 988 verwenden
Führen Sie den folgenden Befehl aus, um den Managed Lustre-CSI-Treiber zu aktivieren, wenn Sie einen neuen GKE-Cluster mit Version 1.33.2-gke.4780000 oder höher erstellen:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver
Standard
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver
Legacy-Port 6988 verwenden
Führen Sie den folgenden Befehl aus, um den Managed Lustre-CSI-Treiber zu aktivieren, wenn Sie einen neuen GKE-Cluster mit einer Version vor 1.33.2-gke.4780000 erstellen:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver \
--enable-legacy-lustre-port
Standard
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
Managed Lustre-CSI-Treiber auf vorhandenen GKE-Clustern aktivieren
In den folgenden Abschnitten wird beschrieben, wie Sie den Managed Lustre-CSI-Treiber auf vorhandenen GKE-Clustern aktivieren.
Standardport 988 verwenden
Führen Sie den folgenden Befehl aus, um den Managed Lustre-CSI-Treiber auf einem vorhandenen GKE-Cluster mit Version 1.33.2-gke.4780000 oder höher zu aktivieren:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=ENABLED
Legacy-Port 6988 verwenden
Wenn Sie den Managed Lustre-CSI-Treiber auf einem vorhandenen GKE-Cluster aktivieren möchten, müssen Sie möglicherweise den Legacy-Port 6988 verwenden, indem Sie das Flag --enable-legacy-lustre-port hinzufügen. Dieses Flag ist in den folgenden Szenarien erforderlich:
- Wenn auf Ihrem GKE-Cluster eine Version vor
1.33.2-gke.4780000ausgeführt wird. Wenn Sie diesen Cluster mit einer vorhandenen Managed Lustre-Instanz verbinden möchten, die mit dem
gke-support-enabledFlag erstellt wurde.gcloud container clusters update ${CLUSTER_NAME} \ --location=${LOCATION} \ --enable-legacy-lustre-port
Knotenupgrade für vorhandene Cluster erforderlich
Wenn Sie den Managed Lustre-CSI-Treiber auf vorhandenen Clustern aktivieren, kann dies dazu führen, dass Knoten neu erstellt werden, um die erforderlichen Kernelmodule für den Managed Lustre-Client zu aktualisieren. Für eine sofortige Verfügbarkeit empfehlen wir, ein manuelles Upgrade Ihrer Knotenpools durchzuführen.
GKE-Cluster in einem Release-Channel werden gemäß dem geplanten Rollout aktualisiert. Dies kann je nach Ihrem Wartungsfenster mehrere Wochen dauern. Wenn Sie eine statische GKE-Version verwenden, müssen Sie ein manuelles Upgrade Ihrer Knotenpools durchführen.
Bis das Knotenupgrade vollständig abgeschlossen ist, kann es zu einem Crashloop des CSI-Treiber-Pods auf Knoten kommen, die auf ein Update warten. Wenn in den CSI-Treiber-Pod-Logs der Fehler Operation not permitted angezeigt wird, ist ein Knotenupgrade oder eine Neuerstellung erforderlich.
Nach dem Upgrade des Knotenpools wird in der Google Cloud Console oder in der CLI-Ausgabe möglicherweise angezeigt, dass CPU-Knoten ein GPU-Image verwenden. Dieses Verhalten ist so vorgesehen. Das GPU-Image wird auf CPU-Knoten wiederverwendet, um die Managed Lustre-Kernelmodule sicher zu installieren. Ihnen werden keine Gebühren für die GPU-Nutzung in Rechnung gestellt.
(Optional) Knotenpool mit mehreren NICs erstellen
Wenn Sie Hochleistungsnetzwerke verwenden möchten, müssen Sie einen Knotenpool mit einem Instanztyp erstellen, der mehrere Netzwerkschnittstellen unterstützt. Die Unterstützung für mehrere NICs ist standardmäßig in GKE-Clustern mit Version 1.35.2-gke.1842000 oder höher aktiviert. Achten Sie darauf, dass sich Ihre sekundären Netzwerkschnittstellen im selben VPC-Netzwerk wie Ihre primäre Schnittstelle befinden.
Führen Sie dazu diesen Befehl aus:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--enable-gvnic \
--additional-node-network network=NETWORK_NAME,subnetwork=SECONDARY_SUBNET
Ersetzen Sie Folgendes:
NODE_POOL_NAME: Der Name des Knotenpools.CLUSTER_NAME: Der Name Ihres Clusters.LOCATION: Die Region oder Zone Ihres Clusters.MACHINE_TYPE: Der Maschinentyp für den Knotenpool, z. B.a3-megagpu-8g, der häufig mit mehreren NICs für hohe Leistung verwendet wird. Mehrere NICs werden für jeden Maschinentyp unterstützt.NETWORK_NAME: Der Name des VPC-Netzwerk.SECONDARY_SUBNET: Der Name des sekundären Subnetzes.
Unterstützung für mehrere NICs für Lustre deaktivieren
Die Unterstützung für mehrere NICs wird zwar für Hochleistungsarbeitslasten empfohlen, Sie sollten sie jedoch in bestimmten Szenarien deaktivieren. Beispielsweise möchten Sie möglicherweise nicht, dass der Lustre-Traffic auf alle verfügbaren Hardwareschnittstellen verteilt wird, oder Sie müssen Verbindungsprobleme zur Fehlerbehebung auf einen einzelnen Netzwerkpfad beschränken.
Hinweis: Wenn Sie die Unterstützung für mehrere NICs auf ausgeführten Knoten deaktivieren, müssen Sie möglicherweise Ihre Knotenpools neu erstellen oder manuell aktualisieren, damit diese Änderung wirksam wird.
Für einen Cluster
Wenn Sie Hochleistungsnetzwerke für den gesamten Cluster deaktivieren möchten, verwenden Sie beim Erstellen oder Aktualisieren des Clusters das Flag --disable-multi-nic-lustre. Beispiel:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--disable-multi-nic-lustre
Ersetzen Sie Folgendes:
CLUSTER_NAME: Der Name Ihres Clusters.LOCATION: Die Region oder Zone Ihres Clusters.
Für einen Knotenpool
Wenn Sie Hochleistungsnetzwerke für einen bestimmten Knotenpool deaktivieren möchten, aktualisieren Sie den Knotenpool, um das Label lustre.csi.storage.gke.io/multi-nic auf false zu setzen:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--zone=LOCATION \
--node-labels=lustre.csi.storage.gke.io/multi-nic=false
Ersetzen Sie Folgendes:
NODE_POOL_NAME: Der Name des Knotenpools.CLUSTER_NAME: Der Name Ihres Clusters.LOCATION: Die Zone Ihres Clusters.
Managed Lustre-CSI-Treiber deaktivieren
Sie können den Managed Lustre-CSI-Treiber auf einem vorhandenen GKE-Cluster mit der Google Cloud CLI deaktivieren.
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
Nachdem der CSI-Treiber deaktiviert wurde, erstellt GKE Ihre Knoten automatisch neu und deinstalliert die Managed Lustre-Kernelmodule.
Mit dem Managed Lustre-CSI-Treiber auf eine vorhandene Managed Lustre-Instanz zugreifen
Wenn Sie bereits eine Managed Lustre-Instanz im selben Netzwerk wie Ihren GKE-Cluster bereitgestellt haben, können Sie mit dieser Anleitung ein PersistentVolume statisch bereitstellen, das auf Ihre Instanz verweist.
In den folgenden Abschnitten wird das typische Verfahren für den Zugriff auf eine vorhandene Managed Lustre-Instanz mit dem Managed Lustre-CSI-Treiber beschrieben:
- Erstellen Sie ein PersistentVolume, das auf die Managed Lustre-Instanz verweist.
- Greifen Sie mit einem PersistentVolumeClaim auf das Volume zu.
- Erstellen Sie eine Arbeitslast, die das Volume verbraucht.
PersistentVolume erstellen
Führen Sie den folgenden Befehl aus, um Ihre Managed Lustre-Instanz zu finden.
gcloud lustre instances list \ --project=${PROJECT_ID} \ --location=${LOCATION}Die Ausgabe sollte ungefähr so aussehen: Notieren Sie sich die Felder Managed Lustre-Instanzname, Dateisystem und Bereitstellungspunkt, bevor Sie mit dem nächsten Schritt fortfahren.
capacityGib: '9000' createTime: '2025-04-28T22:42:11.140825450Z' filesystem: testlfs gkeSupportEnabled: true mountPoint: 10.90.1.4@tcp:/testlfs name: projects/my-project/locations/us-central1-a/instances/my-lustre network: projects/my-project/global/networks/default perUnitStorageThroughput: '1000' state: ACTIVE updateTime: '2025-04-28T22:51:41.559098631Z'Speichern Sie folgendes Manifest in einer Datei mit dem Namen
lustre-pv.yaml:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: 9000Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem claimRef: namespace: default name: lustre-pvc csi: driver: lustre.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME" volumeAttributes: ip: IP_ADDRESS filesystem: FILESYSTEMErsetzen Sie Folgendes:
storageClassName: Der Name Ihrer StorageClass. Der Wert kann ein leerer String sein, muss aber der Spezifikation Ihres PersistentVolumeClaim entsprechen.volumeHandle: Die Kennung für dieses Volume.- PROJECT_ID: die Google Cloud Projekt-ID.
- LOCATION: Der zonale Standort Ihrer Lustre -Instanz. Sie müssen eine unterstützte Zone für den Managed Lustre-CSI-Treiber angeben.
- INSTANCE_NAME: Der Name Ihrer Lustre -Instanz.
ip: Die IP-Adresse Ihrer Lustre-Instanz. Sie erhalten sie aus dem FeldmountPointin der Ausgabe des vorherigen Befehls.filesystem: Der Dateisystemname Ihrer Managed Lustre-Instanz.
Eine vollständige Liste der im PersistentVolume-Objekt unterstützten Felder finden Sie unter der Referenzdokumentation zum Managed Lustre-CSI-Treiber.
Erstellen Sie das PersistentVolume mit dem folgenden Befehl:
kubectl apply -f lustre-pv.yaml
Mit dem PersistentVolumeClaim auf das Volume zugreifen
Sie können eine PersistentVolumeClaim -Ressource erstellen, die auf die StorageClass des Managed Lustre-CSI-Treibers verweist.
In der folgenden Manifestdatei wird ein Beispiel für das Erstellen eines
PersistentVolumeClaim im ReadWriteMany
Zugriffsmodus ,
der auf die zuvor erstellte StorageClass verweist.
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
lustre-pvc.yaml:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: lustre-pvc spec: accessModes: - ReadWriteMany storageClassName: "STORAGE_CLASS_NAME" volumeName: lustre-pv resources: requests: storage: STORAGE_SIZEErsetzen Sie STORAGE_SIZE durch die Speichergröße, z. B.
9000Gi. Sie muss der Spezifikation in Ihrem PersistentVolume entsprechen.Erstellen Sie den PersistentVolumeClaim mit dem folgenden Befehl:
kubectl create -f lustre-pvc.yaml
Arbeitslast erstellen, die das Volume verbraucht
In diesem Abschnitt wird beschrieben, wie Sie einen Pod erstellen, der die zuvor erstellte PersistentVolumeClaim-Ressource verwendet.
Eine PersistentVolumeClaim-Ressource kann von mehreren Pods verwendet werden.
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
my-pod.yaml.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: lustre-volume mountPath: /data volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvcFühren Sie den folgenden Befehl aus, um das Manifest auf den Cluster anzuwenden:
kubectl apply -f my-pod.yamlDer Pod wartet, bis GKE den PersistentVolumeClaim bereitgestellt hat, bevor er gestartet wird. Dieser Vorgang kann einige Minuten dauern.
Prüfen Sie, ob der Pod ausgeführt wird:
kubectl get podsEs kann einige Minuten dauern, bis der Pod den Status
Runningerreicht.Die Ausgabe sieht etwa so aus:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
fsGroup mit Managed Lustre-Volumes verwenden
Sie können den Gruppeninhaber des Verzeichnisses auf Stammebene des bereitgestellten Dateisystems so ändern, dass er einer vom Nutzer angeforderten fsGroup entspricht, die im SecurityContext des Pods angegeben ist.
Fehlerbehebung
Eine Anleitung zur Fehlerbehebung finden Sie auf der Seite Fehlerbehebung in der Managed Lustre-Dokumentation.
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Speicherressourcen, damit Ihrem Google Cloud Konto keine Gebühren in Rechnung gestellt werden.
Löschen Sie den Pod und den PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvcPrüfen Sie den Status des PersistentVolume. Nach dem Löschen des Pods und des PersistentVolumeClaim sollte für das PersistentVolume der Status „Released“ angezeigt werden:
kubectl get pvDie Ausgabe sieht etwa so aus:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Released default/preprov-pvc 2m28sPersistentVolume wiederverwenden. Entfernen Sie den Anspruchsverweis (
claimRef), um das PersistentVolume wiederzuverwenden:kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'Für das PersistentVolume sollte jetzt der Status „Available“ angezeigt werden. Das bedeutet, dass es bereit ist, an einen neuen PersistentVolumeClaim gebunden zu werden. Prüfen Sie den Status des PersistentVolume:
kubectl get pvDie Ausgabe sieht etwa so aus:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Available 19mLöschen Sie das PersistentVolume, wenn es nicht mehr benötigt wird. Wenn das PersistentVolume nicht mehr benötigt wird, löschen Sie es:
kubectl delete pv lustre-pvDurch das Löschen des PersistentVolume wird die zugrunde liegende Managed Lustre-Instanz nicht entfernt.