In diesem Dokument wird beschrieben, wie Sie die Speicherkapazität von Managed Lustre-Volumes für Ihre zustandsorientierten Arbeitslasten in Google Kubernetes Engine (GKE) dynamisch erhöhen, ohne Ihre Anwendungen zu beeinträchtigen.
Wenn Ihre lang laufenden KI/ML-Trainingsjobs beispielsweise dynamische und unvorhersehbare Speicheranforderungen haben, aktivieren Sie die Volume-Erweiterung für Managed Lustre, um die Speicherkapazität Ihres vorhandenen Managed Lustre-PersistentVolume (PV) zu erhöhen.
Dieses Dokument richtet sich an Plattformadministratoren und -operatoren, DevOps, Speicheradministratoren und ML-Entwickler, die Speicher für zustandsorientierte Arbeitslasten in GKE verwalten.
Wenn Sie ein Volume erweitern, erhöhen sich Ihre Kosten entsprechend der neuen, größeren Kapazität gemäß den Standardpreisen für Cloud de Confiance by S3NS Managed Lustre.
Hinweis
Voraussetzungen
Sie müssen die folgenden Anforderungen erfüllen:
- Sie benötigen einen GKE-Cluster mit der Version 1.35.0-gke.2331000 oder höher.
- Sie müssen den Managed Lustre-CSI-Treiber auf einem vorhandenen Cluster aktivieren. Der Treiber ist in Standard- und Autopilot-Clustern standardmäßig deaktiviert.
Beschränkungen
- Sie können die Größe eines vorhandenen Volumes nur erhöhen, nicht verringern.
- Sie können die Volume-Erweiterung nicht mit dem Zugriffsmodus
ReadOnlyManyverwenden. - Wenn Sie die Größe von Lustre-Volumes anpassen, müssen Sie die Mindest- und Höchstkapazitätslimits sowie die Schrittgrößen beachten, die durch die Leistungsstufe Ihres Volumes festgelegt sind. Weitere Informationen finden Sie unter Überlegungen zur Leistung.
- Geben Sie die Größe von Lustre-Volumes in GiB als Vielfaches von 1.000 an. Kubernetes übersetzt Einheiten wie Ti in Binärwerte (z. B. wird 18 Ti als 18.432 GiB interpretiert), was dazu führt, dass die Lustre API die Anfrage ablehnt.
Volume-Erweiterung für eine StorageClass aktivieren
Prüfen Sie, ob Ihre StorageClass die Volume-Erweiterung unterstützt:
kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Ersetzen Sie
STORAGECLASS_NAMEdurch den Namen Ihrer StorageClass.Wenn die Befehlsausgabe nichts ausgibt oder
falsezurückgibt, müssen Sie die StorageClass-Konfiguration explizit aktualisieren, um die Erweiterung zuzulassen.Öffnen Sie die StorageClass-Konfiguration zur Bearbeitung:
kubectl edit storageclass STORAGECLASS_NAMEFügen Sie im Editor das Feld
allowVolumeExpansion: truezu Ihrer StorageClass-Konfiguration hinzu:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: lustre-sc provisioner: lustre.csi.storage.gke.io ... allowVolumeExpansion: true
PersistentVolumeClaim erweitern
Wenn Sie eine Volume-Erweiterung initiieren möchten, bearbeiten Sie Ihren PersistentVolumeClaim (PVC), um eine Erhöhung der Volume-Größe anzufordern.
- Ermitteln Sie die neue, gültige Größe für die Erweiterung, wie unter Gültige Erweiterungsgrößen ermitteln beschrieben.
Öffnen Sie die PVC-Konfiguration zum Bearbeiten:
kubectl edit pvc PVC_NAMEErsetzen Sie
PVC_NAMEdurch den Namen Ihres PVC.Aktualisieren Sie im Editor das Feld
spec.resources.requests.storagemit der gültigen Erweiterungsgröße. Wenn Sie beispielsweise ein Volume von9000Giauf18000Gierweitern möchten, ändern Sie das Feldstorageso:spec: accessModes: - ReadWriteOnce resources: requests: storage: 18000Gi # Changed from 9000Gi
Volume-Erweiterung prüfen
Überwachen Sie den Fortschritt der Erweiterung, indem Sie die Ereignisse des PVC prüfen:
kubectl describe pvc PVC_NAMEDie folgenden Ereignisse in der Ausgabe des PVC geben den aktuellen Fortschritt oder das Ergebnis der Anfrage zur Volume-Erweiterung an:
ExternalExpanding: Gibt an, dass Kubernetes darauf wartet, dass derexternal-resizerden PVC erweitert.Resizing: Gibt an, dass der Vorgang zur Größenänderung ausgeführt wird. Dieser Vorgang kann bei größeren Kapazitätserhöhungen bis zu 90 Minuten dauern.VolumeResizeSuccessful: Bestätigt, dass das Volume erfolgreich erweitert wurde.VolumeResizeFailed: Gibt an, dass ein Fehler aufgetreten ist. Die Ereignisnachricht enthält Details aus der Google Cloud Managed Lustre API. Dieser Zustand ist möglicherweise vorübergehend und wird von selbst behoben.
Prüfen Sie nach Abschluss der Erweiterung die aktualisierte Konfiguration des PVC:
kubectl get pvc PVC_NAME -o yamlAchten Sie darauf, dass das Feld
status.capacitydie neue, erhöhte Größe widerspiegelt.
Wenn während des Erweiterungsvorgangs Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung.
Gültige Erweiterungsgrößen bestimmen
Um die neue Volume-Größe zu bestimmen, ermitteln Sie zuerst die Leistungsstufe Ihres Volumes und die entsprechende Schrittgröße.
Leistungsstufe des Volumes ermitteln
Sie können die Leistungsstufe Ihres Volumes mit einer der folgenden Optionen ermitteln:
StorageClass
Führen Sie den folgenden Befehl aus und suchen Sie nach dem Wert perUnitStorageThroughput (z. B. 1000). Dieser Wert gibt die Leistungsstufe in MB/s pro TiB an.
kubectl get sc STORAGECLASS_NAME -o yaml
Ersetzen Sie STORAGECLASS_NAME durch den Namen Ihrer StorageClass.
Lustre-Instanz
Sie können die Leistungsstufe Ihres Volumes ermitteln, indem Sie die Attribute der zugrunde liegenden Managed Lustre-Instanz direkt prüfen:
Suchen Sie den Namen des PV, das an Ihr PVC gebunden ist:
kubectl get pvc PVC_NAMEErsetzen Sie
PVC_NAMEdurch den Namen Ihres PVC.Die entsprechende Ausgabe sieht etwa so aus: Notieren Sie sich den PV-Namen in der Spalte
VOLUME, z. B.pv-lustre.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-lustre Bound pv-lustre 9000Gi RWX lustre-rwx <unset> 26mSuchen Sie im Feld
volumeHandlenach dem Standort und dem Instanznamen des Volumes:kubectl get pv PV_NAME -o yamlErsetzen Sie
PV_NAMEdurch den PV-Namen aus dem vorherigen Schritt.Der Wert
volumeHandleist alsPROJECT_ID/LOCATION/INSTANCE_NAMEformatiert. Notieren Sie sich die Werte fürINSTANCE_NAMEundLOCATIONfür den nächsten Schritt.Prüfen Sie die Eigenschaften der Leistungsstufe, indem Sie die Managed Lustre-Instanz beschreiben:
gcloud lustre instances describe INSTANCE_NAME --location=LOCATIONErsetzen Sie
INSTANCE_NAMEundLOCATIONdurch die Werte aus dem vorherigen Schritt.Suchen Sie in der Ausgabe nach dem Feld
perUnitStorageThroughput. Dieser Wert gibt die Leistungsstufe in MB/s pro TiB an.
Kapazitätslimits und Schrittgrößen
Nachdem Sie die Leistungsstufe ermittelt haben, finden Sie in der folgenden Tabelle die zugehörigen Kapazitätslimits und die erforderliche Schrittgröße.
Stufe (perUnitStorageThroughput) |
Minimale Kapazität | Maximale Kapazität | Schrittgröße |
|---|---|---|---|
| 1.000 MB/s pro TiB | 9.000 GiB | 954.000 GiB (~1 PiB) | 9.000 GiB |
| 500 MB/s pro TiB | 18.000 GiB | 1.908.000 GiB (~2 PiB) | 18.000 GiB |
| 250 MB/s pro TiB | 36.000 GiB | 3.816.000 GiB (~4 PiB) | 36.000 GiB |
| 125 MB/s pro TiB | 72.000 GiB | 7.632.000 GiB (~8 PiB) | 72.000 GiB |
Die Lautstärke muss entsprechend der Schrittgröße erhöht werden, die der jeweiligen Stufe zugewiesen ist. Jede Kapazitätserhöhung muss ein Vielfaches dieser spezifischen Schrittgröße sein. Wenn Ihr Volume der Stufe 1.000 MB/s beispielsweise eine Kapazität von 9.000 GiB hat, können Sie es auf 18.000 GiB, 27.000 GiB und andere Vielfache erhöhen.
Fehlerbehebung
In diesem Abschnitt finden Sie Lösungen für häufige Probleme, die beim Erweitern von Lustre-Volumes auftreten können.
Erweiterung schlägt mit dem Fehler „Ungültiges Argument“ fehl
Symptom
- Der PVC wechselt in den Status
Resizing, schlägt dann aber fehl. - Wenn Sie den Befehl
kubectl describe pvc PVC_NAMEausführen, wird ein Fehler ähnlich wieVolumeResizeFailed: rpc error: code = InvalidArgument desc = ...angezeigt.
Ursache
Dieser Fehler bedeutet in der Regel, dass die angeforderte Speichergröße aus einem der folgenden Gründe für die Leistungsstufe des Lustre-Volumes nicht gültig ist:
- Die angeforderte Größe ist kein Vielfaches der erforderlichen Schrittgröße für die Stufe.
- Die angeforderte Größe liegt unter der Mindestkapazität oder über der maximalen Kapazität für die Stufe.
Lösung
- Sehen Sie sich die Kapazitätslimits und Schrittgrößen an, um die gültigen Schrittgrößen und Kapazitätslimits für die Leistungsstufe Ihres Volumes zu ermitteln.
- Bearbeiten Sie den PVC noch einmal, um eine gültige Speichergröße anzufordern, die den Schrittgrößen- und Kapazitätslimits entspricht.
Erweiterung schlägt mit einem „Internen Fehler“ fehl
Symptom
- Die Größenänderung des PVC schlägt fehl.
- Wenn Sie den Befehl
kubectl describe pvc PVC_NAMEausführen, wird möglicherweise einVolumeResizeFailed-Ereignis mit einer Fehlermeldung angezeigt, diecode = Internalenthält.
Ursache
Dieser Fehler weist auf ein Problem mit dem zugrunde liegenden Managed Lustre-Dienst hin.
Lösung
- Wiederholen Sie die Erweiterung, indem Sie das PVC-Manifest noch einmal mit der neuen, angeforderten Größe anwenden. Dadurch können vorübergehende Backend-Probleme behoben werden.
- Wenn der erneute Versuch fehlschlägt, wenden Sie sich an Cloud Customer Care.
Die Erweiterung bleibt im Status „Größe wird angepasst“ hängen
Symptom
- Der PVC bleibt über einen längeren Zeitraum im Status
Resizing(mehr als 30 Minuten bei kleineren Erweiterungen oder mehr als 90 Minuten bei größeren Erweiterungen). - Möglicherweise wird ein
VolumeResizeFailed-Ereignis mit der FehlermeldungDEADLINE_EXCEEDEDangezeigt.
Ursache
Dieses Problem kann bei großen Kapazitätserhöhungen auftreten, die bis zu 90 Minuten dauern können. Bei der Komponente csi-external-resizer kann es zu einer Zeitüberschreitung kommen, während sie auf eine Antwort der Google Cloud Managed Lustre API wartet, obwohl der zugrunde liegende Erweiterungsvorgang noch läuft.
Lösung
- Der
csi-external-resizerwiederholt den Vorgang nach einer Backoff-Zeit automatisch. Beobachten Sie die PVC-Ereignisse weiterhin auf einVolumeResizeSuccessful-Ereignis. - Wenn der PVC länger als 90 Minuten im Status
Resizingbleibt, wenden Sie sich an Cloud Customer Care.
Die Erweiterung wird nicht gestartet oder bleibt im Status „ExternalExpanding“ hängen
Symptom
- Sie aktualisieren das Feld
spec.resources.requests.storagein Ihrem PVC, aber der PVC-Status ändert sich nicht inResizing. - Wenn Sie den Befehl
kubectl describe pvc PVC_NAMEausführen, wird im Ereignisprotokoll nur der StatusExternalExpandingangezeigt und der StatusResizingwird nicht erreicht:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalExpanding 21m (x2 over 58m) volume_expand waiting for an external controller to expand this PVC
Ursache
Das weist in der Regel auf eines der folgenden Probleme hin:
- Die mit dem PVC verknüpfte StorageClass lässt keine Volume-Erweiterung zu.
- Es gibt ein Problem mit dem Sidecar-Container
csi-external-resizer, der für die Initiierung der Erweiterung verantwortlich ist.
Lösung
Prüfen Sie die StorageClass-Konfiguration und ob das Feld
allowVolumeExpansion: truefestgelegt ist:kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Wenn
allowVolumeExpansionfehlt oder auffalsegesetzt ist, aktualisieren Sie die StorageClass, um die Volume-Erweiterung zuzulassen.Wenn die StorageClass richtig konfiguriert ist, liegt das Problem wahrscheinlich bei den GKE-Steuerungsebenenkomponenten, die den Vorgang zur Größenänderung verwalten. Wenden Sie sich an Cloud Customer Care.
Die Erweiterung schlägt aufgrund eines Kontingent- oder Kapazitätsproblems fehl.
Symptom
- Die Größenanpassung des PVC schlägt fehl und ein
VolumeResizeFailed-Ereignis wird auf dem PVC angezeigt. - Wenn Sie den Befehl
kubectl describe pvc PVC_NAMEausführen, weist die Ereignismeldung vom Managed Lustre-Backend auf ein Kontingent- oder Kapazitätsproblem hin.
Ursache
Die angeforderte gültige Erweiterung kann nicht ausgeführt werden, da sie die Gesamtkapazität oder das Kontingent überschreitet, das für den Managed Lustre-Dienst in Ihrem Projekt oder Ihrer Region verfügbar ist.
Lösung
- Bearbeiten Sie den PVC noch einmal und fordern Sie eine kleinere Speichererhöhung an.
- Wenden Sie sich an den Cloud de Confiance by S3NS -Administrator Ihrer Organisation, um eine Erhöhung der Gesamtkontingente oder der Kapazität des Lustre-Dienstes für Ihr Projekt anzufordern.
Bereinigen
Löschen Sie den PVC, um zu vermeiden, dass Ihrem Cloud de Confiance by S3NS -Konto die in diesem Dokument verwendeten Ressourcen in Rechnung gestellt werden. Bei diesem Vorgang werden auch das zugehörige PV und die zugrunde liegende Managed Lustre-Instanz gelöscht, wenn reclaimPolicy auf Delete gesetzt ist.
kubectl delete pvc PVC_NAME
Ersetzen Sie PVC_NAME durch den Namen Ihres PVC.
Nächste Schritte
- Weitere Informationen zu Speicher für GKE-Cluster
- Lesen Sie die Dokumentation zu nichtflüchtigen GKE-Volumes und zur Bereitstellung.