Automatische Volumenerweiterung
Die automatische Volumenerweiterung ermöglicht es, dass von Trident bereitgestellte Persistent Volumes automatisch wachsen, sobald die genutzte Kapazität einen definierten Schwellenwert erreicht. Diese Funktion reduziert den Betriebsaufwand und trägt dazu bei, Anwendungsunterbrechungen aufgrund von Kapazitätsengpässen zu vermeiden.
Die automatische Volumenerweiterung wird mithilfe von Autogrow Policies implementiert. Eine Autogrow Policy definiert:
-
Die Auslastungsschwelle, die die Erweiterung auslöst
-
Die Menge, um die das Volumen wächst
-
Die maximale Größe, die das Volume erreichen kann
Volumes erhöhen sich automatisch, wenn der festgelegte Auslastungsschwellenwert überschritten wird. Volumes werden niemals automatisch reduziert.
Anforderungen
Bevor Sie die automatische Volumenerweiterung konfigurieren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
-
Trident 26.02 oder später
-
Rollenbasierte Zugriffssteuerungsberechtigungen zum Erstellen
TridentAutogrowPolicybenutzerdefinierter Ressourcen -
StorageClasses konfiguriert mit
allowVolumeExpansion: true -
Unterstützte ONTAP-Protokolle:
-
Netzwerkdateisystem
-
Internet Small Computer Systems Interface
-
Fibre Channel-Protokoll
-
Non-Volatile Memory Express über Fabrics
-
Einschränkungen
-
ONTAP Non-Volatile Memory Express Raw-Block-Volumes früher als ONTAP 9.16.1 unterstützen keine automatische Erweiterung.
-
Für SAN-Volumes, wenn
growthAmountkleiner oder gleich 50 Mebibyte ist, erhöht Trident den Wert automatisch auf 51 Mebibyte, bevor die Größe angepasst wird, vorausgesetzt, die resultierende Größe überschreitet nichtmaxSize. -
In Brownfield-Umgebungen funktioniert die automatische Erweiterung möglicherweise nicht für bestimmte vorhandene Volumes aufgrund des Migrationsverhaltens bei der Volume-Veröffentlichung.
-
Wenn ein Volumen
maxSizeerreicht, findet keine weitere Erweiterung statt. -
Unterstützte Protokolle für die automatische Volumenerweiterung:
-
Netzwerkdateisystem
-
Internet Small Computer Systems Interface
-
Fibre Channel-Protokoll
-
Non-Volatile Memory Express über Fabrics
-
Volumes mit Autogrow-Richtlinie bereitstellen
Die Autogrow Policy kann auf zwei Ebenen konfiguriert werden:
-
Speicherklassenebene: Legt den Standardwert für alle Volumes fest (mittels Annotation)
-
PVC-Ebene: Überschreibt die Standardeinstellung der Speicherklasse (using annotation)
Erstellen Sie eine Autogrow-Richtlinie
Autogrow-Richtlinien ermöglichen die automatische Volumenerweiterung, wenn Volumes einen definierten Kapazitätsschwellenwert erreichen.
Stellen Sie sicher, dass Sie Folgendes haben:
-
Trident 26.02 oder höher installiert
-
Rollenbasierte Zugriffssteuerungsberechtigungen zum Erstellen
TridentAutogrowPolicyvon Ressourcen -
Verständnis der Anforderungen an das Arbeitslastwachstum
Eine Autogrow Policy definiert, wie sich Volumes automatisch vergrößern, wenn sie einen festgelegten Kapazitätsschwellenwert erreichen.
Sie können Autogrow Policies an jeder beliebigen Stelle in Ihrem Workflow erstellen:
-
Bevor StorageClasses und Volumes erstellt werden
-
Nachdem StorageClasses existieren
-
Nachdem die Volumes bereitgestellt wurden
Diese Flexibilität ermöglicht es Ihnen, eine automatische Erweiterung einzuführen, ohne bestehende Ressourcen neu zu erstellen.
Spezifikationen der Autogrow Policy
Autogrow Policies sind benutzerdefinierte Kubernetes-Ressourcen, die wie folgt definiert sind:
| Feld | Beschreibung | Formatieren | Erforderlich | Beispiel | Standard |
|---|---|---|---|---|---|
Name |
Eindeutige Richtlinienkennung |
Zeichenfolge |
Ja. |
Produktionsdatenbankrichtlinie |
Keine |
usedThreshold |
Kapazitätsprozentsatz, der die Erweiterung auslöst |
Prozentzeichenkette |
Ja. |
"80%" |
Keine |
growthAmount |
Betrag, um den erhöht wird, wenn der Schwellenwert erreicht ist |
Prozentualer Anteil oder Größe |
Nein |
"10%" oder "5Gi" |
"10%" |
maxSize |
Maximale Volumengrößenbeschränkung |
Kubernetes-Menge |
Nein |
"500Gi" |
Unbegrenzt |
Erstellen Sie eine Autogrow-Richtlinie
-
Erstellen Sie eine YAML-Datei, die Ihre Autogrow Policy definiert:
apiVersion: trident.netapp.io/v1 kind: TridentAutogrowPolicy metadata: name: standard-autogrow spec: usedThreshold: "80%" growthAmount: "10%" maxSize: "500Gi" -
Wenden Sie die Richtlinie auf Ihren Cluster an:
kubectl apply -f autogrow-policy.yaml -
Überprüfen Sie, ob die Richtlinie erstellt wurde:
kubectl get tridentautogrowpolicy standard-autogrowErwartete AusgabeNAME USED THRESHOLD GROWTH AMOUNT STATE standard-autogrow 80% 10% Success
Richtlinienstatus
Nachdem Sie eine Richtlinie erstellt haben, validiert Trident die Spezifikation und weist einen der folgenden Zustände zu:
| Status | Beschreibung | Aktion erforderlich |
|---|---|---|
Erfolg |
Die Richtlinie ist validiert und einsatzbereit. |
Keine. |
Fehlgeschlagen |
Validierungsfehler festgestellt. |
Spezifikation prüfen und korrigieren. |
Löschen |
Löschung wird durchgeführt. |
Warten Sie auf den Abschluss. |
Ordnen Sie eine Richtlinie einer StorageClass zu
Sie können eine Autogrow-Richtlinie mit einer StorageClass durch die trident.netapp.io/autogrowPolicy Annotation verknüpfen. Alle Volumes, die aus dieser StorageClass bereitgestellt werden, erben die Richtlinie.
|
|
Die StorageClass muss allowVolumeExpansion: true haben.
|
-
Erstellen oder ändern Sie eine StorageClass mit der Autogrow Policy-Annotation:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ontap-gold annotations: trident.netapp.io/autogrowPolicy: "production-db-policy" provisioner: csi.trident.netapp.io parameters: backendType: "ontap-san" fsType: "ext4" allowVolumeExpansion: true -
Wenden Sie die StorageClass an:
kubectl apply -f storageclass.yaml -
Überprüfen Sie die Annotation:
kubectl get storageclass ontap-gold -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'Erwartete Ausgabeproduction-db-policy
Richtlinienvorrang
Wenn Autogrow-Richtlinien-Annotationen sowohl für eine StorageClass als auch für ein PVC festgelegt sind, wendet Trident die folgenden Vorrangregeln an:
-
PVC-Annotationen haben Vorrang. Wenn eine PVC
trident.netapp.io/autogrowPolicyfestlegt, wird dieser Wert immer verwendet. -
StorageClass-Anmerkung gilt nur, wenn die PVC keine Anmerkung enthält.
-
Wenn keines der beiden die Annotation hat, wird keine Autogrow Policy angewendet.
| StorageClass Anmerkung | PVC-Anmerkung | Effektives Verhalten |
|---|---|---|
|
Nicht festgelegt |
Anwendungsgebiete |
|
|
Verwendet |
|
|
Keine Autogrow-Richtlinie (PVC deaktiviert autogrow). |
Nicht festgelegt |
|
Anwendungsgebiete |
Nicht festgelegt |
Nicht festgelegt |
Keine Autogrow Policy. |
Konfigurationsbeispiele
Die folgenden Beispiele zeigen gängige Autogrow Policy-Konfigurationen für verschiedene Anwendungsfälle.
Konservative Richtlinie für Produktionsdatenbanken
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: production-db-policy
spec:
usedThreshold: "75%"
growthAmount: "20%"
maxSize: "5Ti"
Protokollspeicherung mit festen Wachstumsschritten
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: log-storage-policy
spec:
usedThreshold: "90%"
growthAmount: "10Gi"
maxSize: "100Gi"
Minimalrichtlinie mit Standardeinstellungen
Wenn Sie growthAmount und maxSize weglassen, verwendet Trident die Standardeinstellungen (10% Wachstum, unbegrenzte Größe):
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: logs-policy
spec:
usedThreshold: "85%"
Richtlinie mit benutzerdefiniertem maxSize und standardmäßigem growthAmount
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: default-ga-policy
spec:
usedThreshold: "70%"
maxSize: "100Gi"
Aggressives Wachstum mit unbegrenztem maxSize
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: aggressive-growth-policy
spec:
usedThreshold: "80%"
growthAmount: "150%"
Richtlinie mit Bruchteilprozenten
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: precise-policy
spec:
usedThreshold: "80.28%"
growthAmount: "10.65%"
maxSize: "100Gi"
|
|
Bruchprozentsätze werden unterstützt. Wenn Sie mehr als drei Dezimalstellen angeben, rundet Trident den Wert auf drei Dezimalstellen. |
NAS StorageClass mit Autogrow
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 StorageClass mit Autogrow
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