Skip to main content
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Autogrow-Richtlinien verwalten

Beitragende joan-ing
Änderungen vorschlagen

Nachdem Sie Autogrow Policies erstellt haben, können Sie diese nach Bedarf anzeigen, aktualisieren und löschen. Sie können außerdem überwachen, welche Volumes eine bestimmte Policy verwenden.

Autogrow-Richtlinien anzeigen

Alle Richtlinien auflisten

Verwenden Sie kubectl , um alle Autogrow Policies in Ihrem Cluster aufzulisten:

kubectl get tridentautogrowpolicy

Alternativ verwenden Sie tridentctl:

tridentctl get autogrowpolicy

Richtliniendetails anzeigen

Um die vollständige Spezifikation und den Status einer Richtlinie anzuzeigen:

kubectl describe tridentautogrowpolicy production-db-policy

So zeigen Sie eine Richtlinie mit den zugehörigen Volumes im YAML-Format an:

tridentctl get autogrowpolicy production-db-policy -o yaml

Eine Autogrow-Richtlinie aktualisieren

Sie können eine bestehende Richtlinie anpassen, um deren Schwellenwert, Wachstumsbetrag oder maximale Größe zu ändern. Änderungen werden sofort für alle Volumes wirksam, die diese Richtlinie verwenden.

Wichtig Änderungen betreffen alle Volumes, die derzeit die Richtlinie verwenden. Testen Sie Änderungen nach Möglichkeit zuerst in einer Nicht-Produktionsumgebung.
Schritte
  1. Richtlinie bearbeiten:

    kubectl edit tridentautogrowpolicy production-db-policy
  2. Ändern Sie die spec Felder nach Bedarf:

    spec:
      usedThreshold: "75%"    # Changed from 80%
      growthAmount: "20%"     # Changed from 10%
      maxSize: "1Ti"          # Changed from 500Gi
  3. Speichern und beenden. Die Änderungen werden sofort wirksam.

Aktualisierungsüberlegungen

  • Sofortige Wirkung: Alle Volumes, die die Richtlinie nutzen, übernehmen bei der nächsten Wachstumsbewertung die neuen Parameter.

  • Kein Neustart des Volumes erforderlich: Änderungen gelten für den nächsten Wachstumsvorgang.

  • Erst testen: Validieren Sie Änderungen nach Möglichkeit in einer Nicht-Produktionsumgebung.

  • Änderungen kommunizieren: Benachrichtigen Sie die Teams, wenn Sie gemeinsam genutzte Richtlinien ändern.

Löschen einer Autogrow-Richtlinie

Autogrow-Richtlinien verwenden Finalizer-Schutz, um eine versehentliche Löschung zu verhindern, während Volumes sie aktiv verwenden.

Schritte
  1. Löschen Sie die Richtlinie:

    kubectl delete tridentautogrowpolicy production-db-policy
  2. Wenn Volumes die Richtlinie noch verwenden, wechselt die Löschung in einen Deleting Status. Prüfen Sie, welche Volumes betroffen sind:

    tridentctl get autogrowpolicy production-db-policy -o yaml
  3. Entfernen Sie die Richtlinie von jedem betroffenen Volume. Wählen Sie eine der folgenden Optionen:

    • Option A: Automatisches Wachstum explizit deaktivieren, indem Sie die Annotation auf "none" setzen:

      kubectl annotate pvc <pvc-name> \
        trident.netapp.io/autogrowPolicy="none" \
        --overwrite
    • Option B: Die Annotation vollständig entfernen:

      kubectl annotate pvc <pvc-name> \
        trident.netapp.io/autogrowPolicy-

Löschverhalten

Szenario Verhalten

Keine Volumes verwenden die Richtlinie

Die Richtlinie wird sofort gelöscht.

Volumes verwenden die Richtlinie

Die Richtlinie tritt in Deleting Zustand ein. Ein Finalisierer blockiert den Abschluss, bis alle Volumes entfernt sind.

Alle Volumes werden aus der Richtlinie entfernt

Finalisierer werden entfernt und die Richtlinie wird gelöscht.

Autogrow-Richtliniennutzung überwachen

Überprüfen Sie Volumes mithilfe einer Richtlinie

tridentctl get autogrowpolicy production-db-policy -o json | jq '.volumes'

Ermitteln Sie, welche Richtlinie ein Volume verwendet

kubectl get pvc database-pvc -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'

Richtlinienereignisse überwachen

kubectl get events --field-selector involvedObject.kind=TridentAutogrowPolicy

Unterstützte Protokolle

Autogrow unterstützt die folgenden Speicherprotokolle:

  • NFS

  • ISCSI

  • FCP

  • NVMe

Hinweis Für SAN-Volumes, wenn die konfigurierte growthAmount 50 MiB oder weniger beträgt, erhöht Trident den Wachstumsbetrag für die Größenänderung automatisch auf 51 MB, solange die resultierende Größe maxSize nicht überschreitet.

Bekannte Einschränkungen

  • ONTAP NVMe raw block volumes: Volumes, die mit ONTAP Versionen vor 9.16.1 erstellt wurden, unterstützen kein automatisches Wachstum.

  • Vorhandene Volumes (Brownfield-Bereitstellungen): Die automatische Vergrößerung funktioniert möglicherweise nicht für vorhandene Volumes, selbst wenn eine gültige Autogrow Policy angewendet wird. Dies liegt an einer laufenden Migration der Volume-Veröffentlichungen. Um zu bestätigen, dass die Migration abgeschlossen ist, überprüfen Sie die Trident Controller-Protokolle auf "Migration completed" Meldungen.

Häufig gestellte Fragen

Wann wertet Trident den Schwellenwert aus?

Trident überwacht kontinuierlich die Speicherauslastung. Wenn die belegte Kapazität die usedThreshold`überschreitet, erstellt Trident eine interne Größenänderungsanforderung und erweitert das Volume um die konfigurierte `growthAmount.

Diese Richtlinie löst beispielsweise eine Erweiterung bei 80 % Kapazität aus und erhöht das Volumen jedes Mal um 10 %, bis zu einem Maximum von 500 GiB:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: standard-autogrow
spec:
  usedThreshold: "80%"
  growthAmount: "10%"
  maxSize: "500Gi"

Kann ich eine Richtlinie anwenden, nachdem Volumes bereits bereitgestellt wurden?

Ja. Sie können jederzeit eine Autogrow-Richtlinie erstellen und diese auf bestehende PVCs anwenden, indem Sie die trident.netapp.io/autogrowPolicy Annotation hinzufügen oder aktualisieren. Sie müssen weder die PVC noch die StorageClass neu erstellen.

So wenden Sie eine Richtlinie auf ein bestehendes PVC an:

kubectl annotate pvc <pvc-name> \
  trident.netapp.io/autogrowPolicy="production-db-policy" \
  --overwrite

Um eine Richtlinie auf eine bestehende StorageClass anzuwenden:

kubectl annotate storageclass ontap-gold \
  trident.netapp.io/autogrowPolicy="production-db-policy" \
  --overwrite

Was passiert, wenn ich sowohl für die StorageClass als auch für das PVC eine Autogrow-Richtlinie einrichte?

Die PVC-Annotation hat immer Vorrang. Wenn eine PVC die trident.netapp.io/autogrowPolicy Annotation enthält, verwendet Trident diesen Wert unabhängig davon, was die StorageClass angibt. Weitere Informationen finden Sie unter "Richtlinienvorrang".

Zum Beispiel, gegeben diese StorageClass:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-gold
  annotations:
    trident.netapp.io/autogrowPolicy: "standard-agp"
provisioner: csi.trident.netapp.io
allowVolumeExpansion: true

Und dieses PVC, das die StorageClass-Richtlinie außer Kraft setzt:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-pvc
  annotations:
    trident.netapp.io/autogrowPolicy: "logs-policy"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: ontap-gold

Trident verwendet logs-policy für database-pvc, nicht standard-agp.

Wie deaktiviere ich Autogrow für ein bestimmtes Volume?

Setzen Sie die PVC-Annotation auf "none". Dadurch wird jede StorageClass-Richtlinie für dieses Volume überschrieben:

kubectl annotate pvc <pvc-name> \
  trident.netapp.io/autogrowPolicy="none" \
  --overwrite

Sie können überprüfen, ob autogrow deaktiviert ist:

kubectl get pvc <pvc-name> -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
Erwartete Ausgabe
none

Was passiert, wenn ein Volumen maxSize erreicht?

Trident stellt die Erweiterung des Volumes ein. Es werden keine weiteren Größenänderungsanforderungen für dieses Volume erstellt, selbst wenn die Nutzung weiterhin über den usedThreshold hinaus ansteigt.

Beispielsweise stoppt Trident mit dieser Richtlinie das Wachstum des Volumens, sobald es 100 GiB erreicht:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: capped-policy
spec:
  usedThreshold: "90%"
  growthAmount: "10Gi"
  maxSize: "100Gi"

Um unbegrenztes Wachstum zu ermöglichen, lassen Sie maxSize weg oder setzen Sie es auf 0:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: unlimited-policy
spec:
  usedThreshold: "85%"
  growthAmount: "10%"

Kann ich eine Richtlinie ändern, ohne die Volumes neu zu starten?

Ja. Wenn Sie eine Richtlinie aktualisieren, übernehmen alle Volumes, die diese Richtlinie verwenden, die neuen Parameter bei der nächsten Wachstumsbewertung. Ein Neustart der Volumes ist nicht erforderlich.

Um eine Richtlinie zu aktualisieren:

kubectl edit tridentautogrowpolicy production-db-policy

Passen Sie die Felder nach Bedarf an:

spec:
  usedThreshold: "75%"    # Changed from 80%
  growthAmount: "20%"     # Changed from 10%
  maxSize: "1Ti"          # Changed from 500Gi

Speichern und beenden. Überprüfen Sie die aktualisierte Richtlinie:

kubectl get tridentautogrowpolicy production-db-policy
Erwartete Ausgabe
NAME                   USED THRESHOLD   GROWTH AMOUNT   STATE
production-db-policy   75%              20%             Success

Warum befindet sich meine Richtlinie im Status „Fehlgeschlagen“?

Ein Failed Status zeigt an, dass die Richtlinienspezifikation Validierungsfehler enthält. Führen Sie den folgenden Befehl aus, um die Fehlerdetails anzuzeigen:

kubectl describe tridentautogrowpolicy <policy-name>

Häufige Ursachen sind ein ungültiger usedThreshold (muss zwischen 1–99 % liegen), ein growthAmount, der maxSize überschreitet, oder ein ungültiges Kubernetes-Mengenformat. Korrigieren Sie die Spezifikation und wenden Sie sie erneut an.

kubectl apply -f autogrow-policy.yaml

Warum kann ich eine Richtlinie nicht löschen?

Richtlinien verwenden einen Finalisierungsschutz. Wenn Volumes die Richtlinie noch verwenden, wechselt der Löschvorgang in einen Deleting Zustand und wartet, bis alle Volumes aus der Richtlinie entfernt wurden.

Identifizieren Sie die betroffenen Volumes:

tridentctl get autogrowpolicy production-db-policy -o yaml

Entfernen Sie anschließend die Annotation von jedem PVC:

# Option A: Explicitly disable autogrow
kubectl annotate pvc <pvc-name> \
  trident.netapp.io/autogrowPolicy="none" \
  --overwrite

# Option B: Remove the annotation entirely
kubectl annotate pvc <pvc-name> \
  trident.netapp.io/autogrowPolicy-

Nachdem alle Volumes entfernt wurden, wird der Finalizer freigegeben und die Richtlinie gelöscht.

Funktioniert autogrow mit allen ONTAP Backends?

Autogrow unterstützt NFS-, iSCSI-, FCP- und NVMe-Protokolle. NVMe Raw Block Volumes erfordern jedoch ONTAP 9.16.1 oder höher.

Bei bestehenden Volumes in Brownfield-Umgebungen muss die Migration der Volume-Veröffentlichung möglicherweise abgeschlossen sein, bevor das automatische Wachstum wirksam wird. Überprüfen Sie den Migrationsstatus, indem Sie die Trident-Controller-Protokolle prüfen:

kubectl logs -l app=trident-controller -n trident | grep "Migration completed"

Die folgenden StorageClass-Beispiele zeigen Autogrow für NAS- und SAN-Backends konfiguriert:

NAS-Backend
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-nas-autogrow
  annotations:
    trident.netapp.io/autogrowPolicy: "standard-autogrow"
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  fsType: "ext4"
allowVolumeExpansion: true
SAN-Backend
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: database-storage
  annotations:
    trident.netapp.io/autogrowPolicy: "production-db-policy"
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  fsType: "ext4"
allowVolumeExpansion: true

Was ist der minimale Zuwachs für SAN-Volumes?

Für SAN-Volumes beträgt die effektive Mindestwachstumsgröße 51 MB. Wenn Sie eine growthAmount von 50 MiB oder weniger konfigurieren, erhöht Trident das Wachstum für die Größenänderung automatisch auf 51 MB.

Diese Richtlinie legt beispielsweise ein growthAmount von "40Mi" fest, aber Trident wendet ein Wachstum von 51 MB für jedes SAN-Volume an, das sie verwendet:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: san-minimal-policy
spec:
  usedThreshold: "85%"
  growthAmount: "40Mi"
  maxSize: "100Gi"

Um diese automatische Anpassung zu vermeiden, setzen Sie growthAmount auf einen Wert größer als 50 MiB:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: san-policy
spec:
  usedThreshold: "85%"
  growthAmount: "100Mi"
  maxSize: "500Gi"