Gestisci le policy di Autogrow
Dopo che crei le Autogrow Policies, puoi visualizzarle, aggiornarle ed eliminarle. Puoi anche monitorare quali volumi usano una determinata policy.
Visualizza le policy di crescita automatica
Elenca tutte le politiche
Usa kubectl per elencare tutte le Autogrow Policies nel tuo cluster:
kubectl get tridentautogrowpolicy
In alternativa, usa tridentctl:
tridentctl get autogrowpolicy
Visualizza dettagli della polizza
Per visualizzare le specifiche complete e lo stato di una policy:
kubectl describe tridentautogrowpolicy production-db-policy
Per visualizzare una policy con i volumi associati in formato YAML:
tridentctl get autogrowpolicy production-db-policy -o yaml
Aggiorna una policy di Autogrow
È possibile modificare una policy esistente per cambiarne la soglia, l'entità della crescita o la dimensione massima. Le modifiche hanno effetto immediato per tutti i volumi che utilizzano la policy.
|
|
Le modifiche influiscono su tutti i volumi che utilizzano la policy. Quando possibile, testa prima le modifiche in un ambiente non di produzione. |
-
Modifica la policy:
kubectl edit tridentautogrowpolicy production-db-policy -
Modifica i
speccampi secondo necessità:spec: usedThreshold: "75%" # Changed from 80% growthAmount: "20%" # Changed from 10% maxSize: "1Ti" # Changed from 500Gi -
Salva ed esci. Le modifiche hanno effetto immediato.
Considerazioni sull'aggiornamento
-
Effetto immediato: Tutti i volumi che utilizzano la policy adottano i nuovi parametri alla successiva valutazione della crescita.
-
Non è necessario riavviare il volume: Le modifiche si applicano alla prossima operazione di crescita.
-
Test first: convalidare le modifiche in un ambiente non di produzione quando possibile.
-
Comunica le modifiche: Notifica ai team quando modifichi le policy condivise.
Elimina un criterio Autogrow
Le policy di crescita automatica utilizzano la protezione del finalizzatore per impedire la cancellazione accidentale mentre i volumi le utilizzano attivamente.
-
Elimina la policy:
kubectl delete tridentautogrowpolicy production-db-policy -
Se i volumi utilizzano ancora la policy, l'eliminazione entra in uno stato
Deleting. Verifica quali volumi sono interessati:tridentctl get autogrowpolicy production-db-policy -o yaml -
Rimuovi il criterio da ogni volume interessato. Scegli una delle seguenti opzioni:
-
Opzione A: Disattivare esplicitamente l'autogrow impostando l'annotazione su
"none":kubectl annotate pvc <pvc-name> \ trident.netapp.io/autogrowPolicy="none" \ --overwrite -
Opzione B: Rimuovi completamente l'annotazione:
kubectl annotate pvc <pvc-name> \ trident.netapp.io/autogrowPolicy-
-
Comportamento di eliminazione
| Scenario | Comportamento |
|---|---|
Nessun volume utilizza la policy |
La policy viene eliminata immediatamente. |
I volumi utilizzano la policy |
La policy entra |
Tutti i volumi vengono rimossi dalla policy |
I finalizzatori vengono rimossi e la policy viene eliminata. |
Monitorare l'utilizzo della policy Autogrow
Verificare i volumi utilizzando una policy
tridentctl get autogrowpolicy production-db-policy -o json | jq '.volumes'
Scopri quale policy utilizza un volume
kubectl get pvc database-pvc -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
Monitorare gli eventi delle policy
kubectl get events --field-selector involvedObject.kind=TridentAutogrowPolicy
Protocolli supportati
Autogrow supporta i seguenti protocolli di archiviazione:
-
NFS
-
ISCSI
-
FCP
-
NVMe
|
|
Per i volumi SAN, se la growthAmount configurata è pari o inferiore a 50 MiB, Trident aumenta automaticamente la quantità di crescita a 51 MB per l'operazione di ridimensionamento, a condizione che la dimensione risultante non superi maxSize.
|
Backend supportati
Autogrow supporta i backend ONTAP. Autogrow supporta anche Google Cloud NetApp Volumes (GCNV) sia per i volumi NAS che SAN.
Limitazioni note
-
ONTAP NVMe raw block volumes: I volumi creati con versioni di ONTAP precedenti alla 9.16.1 non supportano l'autogrow.
-
Volumi esistenti (implementazioni brownfield): L'espansione automatica potrebbe non funzionare per i volumi esistenti anche se è stata applicata una Autogrow Policy valida. Questa limitazione è dovuta a una migrazione in corso delle pubblicazioni dei volumi. Per verificare che la migrazione sia completa, controlla i log del controller Trident per messaggi
"Migration completed".
Domande frequenti
Quando Trident valuta la soglia?
Trident monitora costantemente l'utilizzo del volume. Quando la capacità utilizzata supera il usedThreshold, Trident crea una richiesta di ridimensionamento interna ed espande il volume della growthAmount configurata.
Ad esempio, questa policy attiva l'espansione all'80% della capacità e aumenta il volume del 10% ogni volta, fino a un massimo di 500 GiB:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: standard-autogrow
spec:
usedThreshold: "80%"
growthAmount: "10%"
maxSize: "500Gi"
Posso applicare una policy dopo che i volumi sono già stati forniti?
Sì. È possibile creare una Autogrow Policy in qualsiasi momento e applicarla ai PVC esistenti aggiungendo o aggiornando l' `trident.netapp.io/autogrowPolicy`annotazione. Non è necessario ricreare il PVC o il StorageClass.
Per applicare una policy a un PVC esistente:
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="production-db-policy" \
--overwrite
Per applicare una policy a un'istanza esistente di StorageClass:
kubectl annotate storageclass ontap-gold \
trident.netapp.io/autogrowPolicy="production-db-policy" \
--overwrite
Cosa succede se imposto una politica di crescita automatica sia sulla StorageClass che sul PVC?
L'annotazione PVC ha sempre la precedenza. Se un PVC ha l'annotazione trident.netapp.io/autogrowPolicy, Trident utilizza quel valore indipendentemente da quanto specificato in StorageClass. Consultare "Precedenza delle policy" per i dettagli.
Ad esempio, dato questo 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
E questo PVC che annulla la politica StorageClass:
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 usa logs-policy per database-pvc, non standard-agp.
Come faccio a disattivare l'autogrow per un volume specifico?
Imposta l'annotazione PVC su "none". Questa impostazione sovrascrive qualsiasi policy a livello di StorageClass per quel volume:
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="none" \
--overwrite
Puoi verificare che autogrow sia disabilitato:
kubectl get pvc <pvc-name> -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
none
Cosa succede quando un volume raggiunge maxSize?
Trident interrompe l'espansione del volume. Non crea ulteriori richieste di ridimensionamento per quel volume, anche se l'utilizzo continua ad aumentare oltre il usedThreshold.
Ad esempio, con questa policy, Trident interrompe la crescita del volume dopo che raggiunge i 100 GiB:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: capped-policy
spec:
usedThreshold: "90%"
growthAmount: "10Gi"
maxSize: "100Gi"
Per consentire una crescita illimitata, ometti maxSize o impostalo su 0:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: unlimited-policy
spec:
usedThreshold: "85%"
growthAmount: "10%"
Posso modificare una policy senza riavviare i volumi?
Sì. Quando aggiorni una policy, tutti i volumi che utilizzano quella policy adottano i nuovi parametri alla successiva valutazione della crescita. Non è necessario riavviare i volumi.
Per aggiornare una policy in vigore:
kubectl edit tridentautogrowpolicy production-db-policy
Modifica i campi secondo necessità:
spec:
usedThreshold: "75%" # Changed from 80%
growthAmount: "20%" # Changed from 10%
maxSize: "1Ti" # Changed from 500Gi
Salva ed esci. Verifica la policy aggiornata:
kubectl get tridentautogrowpolicy production-db-policy
NAME USED THRESHOLD GROWTH AMOUNT STATE
production-db-policy 75% 20% Success
Perché la mia policy è in stato Failed?
Uno Failed stato indica che la specifica della policy contiene errori di convalida. Esegui il seguente comando per visualizzare i dettagli dell'errore:
kubectl describe tridentautogrowpolicy <policy-name>
Le cause più comuni includono un usedThreshold non valido (deve essere compreso tra 1 e 99%), un growthAmount che supera maxSize, o un formato di quantità Kubernetes non valido. Correggere la specifica e riapplicarla:
kubectl apply -f autogrow-policy.yaml
Perché non posso eliminare una policy?
Le policy utilizzano la protezione del finalizzatore. Se i volumi utilizzano ancora la policy, l'eliminazione entra in uno stato Deleting e attende finché non rimuovi tutti i volumi dalla policy.
Identificare i volumi interessati:
tridentctl get autogrowpolicy production-db-policy -o yaml
Quindi rimuovere l'annotazione da ogni 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-
Dopo aver rimosso tutti i volumi, Trident rilascia il finalizzatore ed elimina la policy.
Quali backend sono supportati da autogrow?
Autogrow supporta i backend ONTAP. Supporta inoltre Google Cloud NetApp Volumes (GCNV) sia per i volumi NAS che SAN.
Autogrow supporta i protocolli NFS, iSCSI, FCP e NVMe. I volumi a blocchi raw NVMe richiedono ONTAP 9.16.1 o versioni successive.
I volumi esistenti nelle implementazioni brownfield potrebbero richiedere il completamento della migrazione della pubblicazione dei volumi prima che l'espansione automatica abbia effetto. Per verificare lo stato della migrazione, controlla i log del controller Trident:
kubectl logs -l app=trident-controller -n trident | grep "Migration completed"
I seguenti esempi di StorageClass mostrano l'autogrow configurato per i backend NAS e SAN:
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
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
Qual è la quantità minima di crescita per i volumi SAN?
Per i volumi SAN, la crescita minima effettiva è di 51 MB. Se si configura un growthAmount di 50 MiB o meno, Trident aumenta automaticamente la crescita a 51 MB per l'operazione di ridimensionamento.
Ad esempio, questa policy imposta una growthAmount di "40Mi", ma Trident applica una crescita di 51 MB per qualsiasi volume SAN che la utilizza:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: san-minimal-policy
spec:
usedThreshold: "85%"
growthAmount: "40Mi"
maxSize: "100Gi"
Per evitare questa regolazione automatica, impostare growthAmount su un valore maggiore di 50 MiB:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: san-policy
spec:
usedThreshold: "85%"
growthAmount: "100Mi"
maxSize: "500Gi"