Espansione automatica del volume
L'espansione automatica del volume consente ai Persistent Volumes forniti da Trident di aumentare automaticamente quando la capacità utilizzata raggiunge una soglia definita. Questa funzionalità riduce il sovraccarico operativo e aiuta a prevenire l'interruzione delle applicazioni causata dall'esaurimento della capacità.
L'espansione automatica del volume viene implementata utilizzando Autogrow Policies. Una Autogrow Policy definisce:
-
La soglia di utilizzo che attiva l'espansione
-
La quantità di cui cresce il volume
-
La dimensione massima che il volume può raggiungere
I volumi aumentano automaticamente di dimensione quando viene superata la soglia di utilizzo definita. I volumi non vengono mai ridotti automaticamente.
Requisiti
Prima di configurare l'espansione automatica del volume, assicurarsi che siano soddisfatti i seguenti requisiti:
-
Trident 26.02 o versioni successive
-
Autorizzazioni di controllo degli accessi basate sui ruoli per creare
TridentAutogrowPolicyrisorse personalizzate -
StorageClasses configurati con
allowVolumeExpansion: true -
Protocolli ONTAP supportati:
-
Network File System (NFS)
-
Internet Small Computer Systems Interface (iSCSI)
-
Protocollo Fibre Channel (NVMe)
-
Non-Volatile Memory Express over Fabrics (FCP)
-
Limitazioni
-
I volumi raw block ONTAP Non-Volatile Memory Express precedenti a ONTAP 9.16.1 non supportano l'espansione automatica.
-
Per i volumi di storage area network, se
growthAmountè inferiore o uguale a 50 mebibyte, Trident aumenta automaticamente il valore a 51 mebibyte prima del ridimensionamento, a condizione che la dimensione risultante non superimaxSize. -
Negli ambienti brownfield, l'espansione automatica potrebbe non funzionare per alcuni volumi esistenti a causa del comportamento di migrazione della pubblicazione del volume.
-
Quando un volume raggiunge
maxSize, non si verifica alcuna ulteriore espansione. -
Protocolli supportati per l'espansione automatica del volume:
-
Network File System (NFS)
-
Internet Small Computer Systems Interface (iSCSI)
-
Protocollo Fibre Channel (NVMe)
-
Non-Volatile Memory Express over Fabrics (FCP)
-
Provision Volumes con criterio di Autogrow
La policy di Autogrow può essere configurata a due livelli:
-
Livello di classe di archiviazione: imposta il valore predefinito per tutti i volumi (usando l'annotazione)
-
Livello PVC: sostituisce la classe di archiviazione predefinita (utilizzando annotazione)
Crea una policy di Autogrow
Le Autogrow Policies consentono l'espansione automatica del volume quando i volumi raggiungono una soglia di capacità definita.
Assicurati di avere:
-
Trident 26.02 o versioni successive installato
-
Autorizzazioni di controllo degli accessi basate sui ruoli per creare
TridentAutogrowPolicyrisorse -
Comprensione dei requisiti di crescita del carico di lavoro
Una Autogrow Policy definisce come i volumi si espandono automaticamente quando raggiungono una soglia di capacità definita.
È possibile creare Autogrow Policies in qualsiasi momento del flusso di lavoro:
-
Prima che StorageClasses e i volumi vengano creati
-
Dopo che StorageClasses esistono
-
Dopo che i volumi sono stati effettuati il provisioning
Questa flessibilità consente di introdurre l'espansione automatica senza ricreare le risorse esistenti.
Specifiche della Autogrow Policy
Le Autogrow Policies sono risorse personalizzate di Kubernetes definite come segue:
| Campo | Descrizione | Formato | Obbligatorio | Esempio | Predefinito |
|---|---|---|---|---|---|
nome |
Identificatore univoco della policy |
Stringa |
Sì |
production-db-policy |
Nessuno |
usedThreshold |
Percentuale di capacità che innesca l'espansione |
Stringa percentuale |
Sì |
"80%" |
Nessuno |
growthAmount |
Quantità da aumentare quando viene raggiunta la soglia |
Percentuale o dimensione |
No |
"10%" o "5Gi" |
"10%" |
maxSize |
Limite massimo della dimensione del volume |
Quantità Kubernetes |
No |
"500Gi" |
Illimitato |
Crea una policy di Autogrow
-
Crea un file YAML che definisce la tua Autogrow Policy:
apiVersion: trident.netapp.io/v1 kind: TridentAutogrowPolicy metadata: name: standard-autogrow spec: usedThreshold: "80%" growthAmount: "10%" maxSize: "500Gi" -
Applica la policy al tuo cluster:
kubectl apply -f autogrow-policy.yaml -
Verificare che la policy sia stata creata:
kubectl get tridentautogrowpolicy standard-autogrowOutput previstoNAME USED THRESHOLD GROWTH AMOUNT STATE standard-autogrow 80% 10% Success
Stati delle policy
Dopo aver creato una policy, Trident convalida la specifica e assegna uno dei seguenti stati:
| Stato | Descrizione | Azione richiesta |
|---|---|---|
Successo |
La policy è convalidata e pronta per l'uso. |
Nessuno. |
Non riuscito |
Sono stati rilevati errori di convalida. |
Rivedi e correggi la specifica. |
Eliminazione |
L'eliminazione è in corso. |
Attendere il completamento. |
Associa una policy a un StorageClass
È possibile associare una Autogrow Policy a una StorageClass utilizzando l' `trident.netapp.io/autogrowPolicy`annotazione. Tutti i volumi forniti da quella StorageClass ereditano la policy.
|
|
Il StorageClass deve avere allowVolumeExpansion: true.
|
-
Crea o modifica una StorageClass con l'annotazione Autogrow Policy:
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 -
Applica il StorageClass:
kubectl apply -f storageclass.yaml -
Verifica l'annotazione:
kubectl get storageclass ontap-gold -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'Output previstoproduction-db-policy
Precedenza delle policy
Quando le annotazioni Autogrow Policy sono impostate sia su una StorageClass che su un PVC, Trident applica le seguenti regole di precedenza:
-
L'annotazione PVC ha la priorità. Se un PVC imposta
trident.netapp.io/autogrowPolicy, quel valore viene sempre utilizzato. -
StorageClass annotation si applica solo quando il PVC non ha annotazione.
-
Se nessuno dei due ha l'annotazione, non viene applicata alcuna Autogrow Policy.
| Annotazione StorageClass | Annotazione PVC | Comportamento efficace |
|---|---|---|
|
Non impostato |
Usa |
|
|
Utilizza |
|
|
No Autogrow Policy (PVC disabilita autogrow). |
Non impostato |
|
Usi |
Non impostato |
Non impostato |
Nessuna Autogrow Policy. |
Esempi di configurazione
Gli esempi seguenti mostrano configurazioni comuni di Autogrow Policy per diversi casi d'uso.
Politica conservativa per database di produzione
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: production-db-policy
spec:
usedThreshold: "75%"
growthAmount: "20%"
maxSize: "5Ti"
Archiviazione dei log con incrementi di crescita fissi
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: log-storage-policy
spec:
usedThreshold: "90%"
growthAmount: "10Gi"
maxSize: "100Gi"
Politica minima con valori predefiniti
Quando si omettono growthAmount e maxSize, Trident utilizza i valori predefiniti (10% crescita, dimensione illimitata):
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: logs-policy
spec:
usedThreshold: "85%"
Policy con un maxSize personalizzato e growthAmount predefinito
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: default-ga-policy
spec:
usedThreshold: "70%"
maxSize: "100Gi"
Crescita aggressiva con maxSize illimitata
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: aggressive-growth-policy
spec:
usedThreshold: "80%"
growthAmount: "150%"
Policy con percentuali frazionarie
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: precise-policy
spec:
usedThreshold: "80.28%"
growthAmount: "10.65%"
maxSize: "100Gi"
|
|
Sono supportate le percentuali frazionarie. Se si specificano più di tre cifre decimali, Trident arrotonda il valore a tre cifre decimali. |
NAS StorageClass con 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 con crescita automatica
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