Gerenciar políticas de crescimento automático
Após criar as Autogrow Policies, você pode visualizá-las, atualizá-las e excluí-las conforme necessário. Você também pode monitorar quais volumes estão usando uma determinada policy.
Ver políticas de Autogrow
Listar todas as políticas
Use kubectl para listar todas as Autogrow Policies no seu cluster:
kubectl get tridentautogrowpolicy
Alternativamente, use tridentctl:
tridentctl get autogrowpolicy
Ver detalhes da política
Para visualizar a especificação completa e o status de uma policy:
kubectl describe tridentautogrowpolicy production-db-policy
Para visualizar uma apólice com seus respectivos volumes em formato YAML:
tridentctl get autogrowpolicy production-db-policy -o yaml
Atualizar uma política de crescimento automático
Você pode modificar uma política existente para alterar seu limite, quantidade de crescimento ou tamanho máximo. As alterações entram em vigor imediatamente para todos os volumes que utilizam a política.
|
|
As alterações afetam todos os volumes que atualmente utilizam a política. Teste as alterações primeiro em um ambiente que não seja de produção, sempre que possível. |
-
Edite a política:
kubectl edit tridentautogrowpolicy production-db-policy -
Modifique os
specfields conforme necessário:spec: usedThreshold: "75%" # Changed from 80% growthAmount: "20%" # Changed from 10% maxSize: "1Ti" # Changed from 500Gi -
Salve e saia. As alterações entram em vigor imediatamente.
Considerações sobre atualização
-
Efeito imediato: Todos os volumes que utilizam a política adotam os novos parâmetros na próxima avaliação de crescimento.
-
Não é necessário reiniciar o volume: As alterações serão aplicadas na próxima operação de crescimento.
-
Teste primeiro: Valide as alterações em um ambiente que não seja de produção quando possível.
-
Comunique alterações: Notifique as equipes quando você modificar as políticas compartilhadas.
Excluir uma política de crescimento automático
As políticas de crescimento automático usam proteção de finalizador para evitar exclusão acidental enquanto os volumes estão usando-as ativamente.
-
Excluir a política:
kubectl delete tridentautogrowpolicy production-db-policy -
Se os volumes ainda estiverem usando a política, a exclusão entra em um
Deletingestado. Verifique quais volumes são afetados:tridentctl get autogrowpolicy production-db-policy -o yaml -
Remova a política de cada volume afetado. Escolha uma das seguintes opções:
-
Opção A: desative explicitamente o crescimento automático definindo a anotação como
"none":kubectl annotate pvc <pvc-name> \ trident.netapp.io/autogrowPolicy="none" \ --overwrite -
Opção B: remover a anotação completamente
kubectl annotate pvc <pvc-name> \ trident.netapp.io/autogrowPolicy-
-
Comportamento de exclusão
| Cenário | Comportamento |
|---|---|
Nenhum volume utiliza a política |
A política é excluída imediatamente. |
Os volumes estão utilizando a política |
A política entra em |
Todos os volumes são removidos da política |
Os finalizadores são removidos e a policy é excluída. |
Monitorar o uso da política Autogrow
Verificar volumes usando uma política
tridentctl get autogrowpolicy production-db-policy -o json | jq '.volumes'
Descubra qual política um volume utiliza
kubectl get pvc database-pvc -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
Monitorar eventos de políticas
kubectl get events --field-selector involvedObject.kind=TridentAutogrowPolicy
Protocolos suportados
Autogrow suporta os seguintes protocolos de armazenamento:
-
NFS
-
ISCSI
-
FCP
-
NVMe
|
|
Para volumes SAN, se o growthAmount configurado for de 50 MiB ou menos, Trident aumenta automaticamente o valor de crescimento para 51 MB na operação de redimensionamento, desde que o tamanho resultante não exceda maxSize.
|
Limitações conhecidas
-
ONTAP Volumes de bloco bruto NVMe: Volumes criados com versões do ONTAP anteriores à 9.16.1 não suportam autogrow.
-
Volumes existentes (implantações brownfield): O Autogrow pode não funcionar para volumes existentes, mesmo que uma Política de Autogrow válida seja aplicada. Isso ocorre devido a uma migração em andamento das publicações de volume. Para confirmar se a migração foi concluída, verifique os logs do controlador Trident para mensagens
"Migration completed".
Perguntas frequentes
Quando o Trident avalia o limiar?
Trident monitora continuamente o uso do volume. Quando a capacidade utilizada ultrapassa o usedThreshold, Trident cria uma solicitação interna de redimensionamento e expande o volume pela configuração de growthAmount.
Por exemplo, esta política aciona a expansão em 80% da capacidade e aumenta o volume em 10% cada vez, até um máximo de 500 GiB:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: standard-autogrow
spec:
usedThreshold: "80%"
growthAmount: "10%"
maxSize: "500Gi"
Posso aplicar uma política depois que os volumes já foram provisionados?
Sim. Você pode criar uma Política de Crescimento Automático a qualquer momento e aplicá-la a PVCs existentes adicionando ou atualizando a trident.netapp.io/autogrowPolicy anotação. Você não precisa recriar o PVC ou o StorageClass.
Para aplicar uma política a um PVC existente:
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="production-db-policy" \
--overwrite
Para aplicar uma política a um StorageClass existente:
kubectl annotate storageclass ontap-gold \
trident.netapp.io/autogrowPolicy="production-db-policy" \
--overwrite
O que acontece se eu definir uma Autogrow Policy tanto no StorageClass quanto no PVC?
A anotação do PVC sempre tem precedência. Se um PVC tiver a trident.netapp.io/autogrowPolicy anotação, Trident usa esse valor independentemente do que o StorageClass especifica. Consulte "Precedência de política" para obter detalhes.
Por exemplo, dado este 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 este PVC que se sobrepõe à política de 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 para database-pvc, não standard-agp.
Como faço para desativar o autogrow para um volume específico?
Defina a anotação PVC como "none". Isso substitui qualquer política de nível de StorageClass para esse volume:
kubectl annotate pvc <pvc-name> \
trident.netapp.io/autogrowPolicy="none" \
--overwrite
Você pode verificar se o autogrow está desativado:
kubectl get pvc <pvc-name> -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
none
O que acontece quando um volume atinge maxSize?
Trident interrompe a expansão do volume. Nenhuma outra solicitação de redimensionamento é criada para esse volume, mesmo que o uso continue a aumentar além do usedThreshold.
Por exemplo, com essa política, Trident para de crescer o volume assim que ele atinge 100 GiB:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: capped-policy
spec:
usedThreshold: "90%"
growthAmount: "10Gi"
maxSize: "100Gi"
Para permitir crescimento ilimitado, omita maxSize ou defina como 0:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: unlimited-policy
spec:
usedThreshold: "85%"
growthAmount: "10%"
Posso alterar uma política sem reiniciar os volumes?
Sim. Quando você atualiza uma política, todos os volumes que usam essa política adotam os novos parâmetros na próxima avaliação de crescimento. Não é necessário reiniciar nenhum volume.
Para atualizar uma política existente:
kubectl edit tridentautogrowpolicy production-db-policy
Modifique os campos conforme necessário:
spec:
usedThreshold: "75%" # Changed from 80%
growthAmount: "20%" # Changed from 10%
maxSize: "1Ti" # Changed from 500Gi
Salve e saia. Verifique a política atualizada:
kubectl get tridentautogrowpolicy production-db-policy
NAME USED THRESHOLD GROWTH AMOUNT STATE
production-db-policy 75% 20% Success
Por que minha policy está em estado de falha?
Um Failed estado indica que a especificação da política contém erros de validação. Execute o seguinte comando para visualizar os detalhes do erro:
kubectl describe tridentautogrowpolicy <policy-name>
As causas comuns incluem um usedThreshold inválido (deve estar entre 1–99%), um growthAmount que excede maxSize, ou um formato de quantidade do Kubernetes inválido. Corrija a especificação e reaplique:
kubectl apply -f autogrow-policy.yaml
Por que não consigo excluir uma política?
As políticas utilizam proteção de finalização. Se os volumes ainda estiverem utilizando a política, a exclusão entra em um estado Deleting e aguarda até que todos os volumes sejam removidos da política.
Identifique os volumes afetados:
tridentctl get autogrowpolicy production-db-policy -o yaml
Em seguida, remova a anotação de cada 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-
Depois que todos os volumes são removidos, o finalizador é liberado e a política é excluída.
O recurso de crescimento automático funciona com todos os backends do ONTAP?
Autogrow é compatível com os protocolos NFS, iSCSI, FCP e NVMe. No entanto, volumes de bloco bruto NVMe exigem ONTAP 9.16.1 ou posterior.
Os volumes existentes em implantações brownfield podem exigir que a migração da publicação de volume seja concluída antes que o autogrow entre em vigor. Verifique o status da migração consultando os logs do controlador Trident:
kubectl logs -l app=trident-controller -n trident | grep "Migration completed"
Os seguintes exemplos de StorageClass mostram o autogrow configurado para backends 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 é o valor mínimo de crescimento para volumes SAN?
Para volumes SAN, o crescimento mínimo efetivo é de 51 MB. Se você configurar um growthAmount de 50 MiB ou menos, Trident aumenta automaticamente o crescimento para 51 MB na operação de redimensionamento.
Por exemplo, esta política define um growthAmount de "40Mi", mas Trident aplica um crescimento de 51 MB para qualquer volume SAN que a utilize:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: san-minimal-policy
spec:
usedThreshold: "85%"
growthAmount: "40Mi"
maxSize: "100Gi"
Para evitar esse ajuste automático, defina growthAmount para um valor superior a 50 MiB:
apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
name: san-policy
spec:
usedThreshold: "85%"
growthAmount: "100Mi"
maxSize: "500Gi"