Skip to main content
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Gerenciar políticas de crescimento automático

Colaboradores joan-ing

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.

Importante 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.
Passos
  1. Edite a política:

    kubectl edit tridentautogrowpolicy production-db-policy
  2. Modifique os spec fields conforme necessário:

    spec:
      usedThreshold: "75%"    # Changed from 80%
      growthAmount: "20%"     # Changed from 10%
      maxSize: "1Ti"          # Changed from 500Gi
  3. 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.

Passos
  1. Excluir a política:

    kubectl delete tridentautogrowpolicy production-db-policy
  2. Se os volumes ainda estiverem usando a política, a exclusão entra em um Deleting estado. Verifique quais volumes são afetados:

    tridentctl get autogrowpolicy production-db-policy -o yaml
  3. 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 Deleting estado. Um finalizador bloqueia a conclusão até que todos os volumes sejam removidos.

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

Observação 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}'
Resultado esperado
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
Resultado esperado
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:

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 é 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"