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 anzeigen, aktualisieren und löschen. Es besteht außerdem die Möglichkeit zu ü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 diese Richtlinie verwenden. Änderungen sollten nach Möglichkeit zunächst in einer Nicht-Produktionsumgebung getestet werden.
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 Volumina, die die Richtlinie anwenden, übernehmen die neuen Parameter bei der nächsten Wachstumsbewertung.

  • 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 Policies 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 die Volumes die Richtlinie noch verwenden, wechselt der Löschvorgang in einen `Deleting`Status. Es kann geprüft werden, 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.

Unterstützte Backends

Autogrow unterstützt ONTAP Backends. Autogrow unterstützt außerdem Google Cloud NetApp Volumes (GCNV) sowohl für NAS- als auch für SAN Volumes.

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-Richtlinie angewendet wird. Diese Einschränkung ist auf eine laufende Migration der Volume-Veröffentlichungen zurückzuführen. Zur Bestätigung, dass die Migration abgeschlossen ist, sind die Trident Controller-Protokolle auf "Migration completed" Meldungen zu prüfen.

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. Siehe "Richtlinienvorrang" für Details.

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?

Die PVC-Annotation wird auf "none" gesetzt. Diese Einstellung überschreibt jede Richtlinie auf StorageClass-Ebene für dieses Volume:

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 über den usedThreshold hinaus weiter zunimmt.

Beispielsweise wird mit dieser Richtlinie das Wachstum des Volumens durch Trident gestoppt, 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 eine Richtlinie aktualisiert wird, ü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 Status 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, gibt Trident den Finalizer frei und löscht die Richtlinie.

Welche Backends unterstützt Autogrow?

Autogrow unterstützt ONTAP Backends. Unterstützt werden außerdem Google Cloud NetApp Volumes (GCNV) sowohl für NAS- als auch für SAN-Volumes.

Autogrow unterstützt die Protokolle NFS, iSCSI, FCP und NVMe. NVMe Raw-Block-Volumes erfordern 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. Zum Überprüfen des Migrationsstatus sind die Trident Controller-Protokolle zu 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"