Skip to main content
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Gestisci le policy di Autogrow

Collaboratori joan-ing

Dopo aver creato le Autogrow Policies, puoi visualizzarle, aggiornarle ed eliminarle secondo necessità. Puoi anche monitorare quali volumi stanno utilizzando 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.

Importante Le modifiche interessano tutti i volumi che attualmente utilizzano la policy. Testare prima le modifiche in un ambiente non di produzione, se possibile.
Fasi
  1. Modifica la policy:

    kubectl edit tridentautogrowpolicy production-db-policy
  2. Modifica i spec campi secondo necessità:

    spec:
      usedThreshold: "75%"    # Changed from 80%
      growthAmount: "20%"     # Changed from 10%
      maxSize: "1Ti"          # Changed from 500Gi
  3. Salva ed esci. Le modifiche hanno effetto immediato.

Considerazioni sull'aggiornamento

  • Effetto immediato: tutti i volumi che utilizzano la policy adottano nuovi parametri alla successiva valutazione della crescita.

  • Non è necessario riavviare il volume: Le modifiche si applicano alla successiva 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 Autogrow utilizzano la protezione del finalizzatore per impedire l'eliminazione accidentale mentre i volumi le stanno utilizzando attivamente.

Fasi
  1. Elimina la policy:

    kubectl delete tridentautogrowpolicy production-db-policy
  2. 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
  3. 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 Deleting nello stato. Un finalizzatore blocca il completamento finché tutti i volumi non vengono rimossi.

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

Nota 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.

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 (distribuzioni brownfield): l'autogrow potrebbe non funzionare per i volumi esistenti anche se viene applicata una valida Autogrow Policy. Ciò è dovuto a una migrazione in corso delle pubblicazioni dei volumi. Per confermare che la migrazione sia stata completata, controlla i log del controller Trident per "Migration completed" messaggi.

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. Fare riferimento a "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". Questo sovrascrive qualsiasi criterio 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}'
Output previsto
none

Cosa succede quando un volume raggiunge maxSize?

Trident interrompe l'espansione del volume. Non vengono create ulteriori richieste di ridimensionamento per quel volume, anche se l'utilizzo continua ad aumentare oltre il usedThreshold.

Ad esempio, con questa policy, Trident smette di aumentare il volume una volta raggiunti 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 si aggiorna una policy, tutti i volumi che la utilizzano adottano i nuovi parametri alla successiva valutazione della crescita. Non è necessario riavviare alcun volume.

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
Output previsto
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 Deleting stato e attende che tutti i volumi vengano rimossi 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 che tutti i volumi sono stati rimossi, il finalizzatore viene rilasciato e il criterio viene eliminato.

L'autogrow funziona con tutti i backend ONTAP?

Autogrow supporta i protocolli NFS, iSCSI, FCP e NVMe. Tuttavia, i volumi raw block NVMe richiedono ONTAP 9.16.1 o versioni successive.

I volumi esistenti nelle distribuzioni brownfield potrebbero richiedere il completamento della migrazione della pubblicazione del volume prima che l'autogrow abbia effetto. Verificare lo stato della migrazione controllando 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:

Backend NAS
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
Backend SAN
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"