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.

Expansão de volume automática

Colaboradores joan-ing

A expansão de volume permite que os Volumes Persistentes provisionados pelo Trident cresçam automaticamente quando a capacidade utilizada atinge um limite definido. Essa funcionalidade reduz a sobrecarga operacional e ajuda a evitar interrupções nos aplicativos causadas pelo esgotamento da capacidade.

A expansão de volume automática é implementada usando Autogrow Policies. Uma Autogrow Policy define:

  • O limite de utilização que desencadeia a expansão

  • A quantidade pela qual o volume cresce

  • O tamanho máximo que o volume pode atingir

Os volumes aumentam de tamanho automaticamente quando o limite de utilização definido é excedido. Os volumes nunca são reduzidos automaticamente.

Requisitos

Antes de configurar a expansão automática de volume, certifique-se de que os seguintes requisitos sejam atendidos:

  • Trident 26.02 ou posterior

  • Permissões de controle de acesso baseadas em funções para criar TridentAutogrowPolicy recursos personalizados

  • StorageClasses configurado com allowVolumeExpansion: true

  • Protocolos ONTAP suportados:

    • Sistema de Arquivos de Rede

    • Internet Small Computer Systems Interface

    • Protocolo Fibre Channel

    • Non-Volatile Memory Express over Fabrics

Limitações

  • Os volumes de bloco bruto do ONTAP Non-Volatile Memory Express anteriores ao ONTAP 9.16.1 não suportam expansão automática.

  • Para volumes de rede de área de armazenamento, se growthAmount for menor ou igual a 50 mebibytes, Trident aumenta automaticamente o valor para 51 mebibytes antes de redimensionar, desde que o tamanho resultante não exceda maxSize.

  • Em ambientes já existentes, a expansão automática pode não funcionar para determinados volumes existentes devido ao comportamento de migração de publicação de volume.

  • Quando um volume atinge maxSize, nenhuma expansão adicional ocorre.

  • Protocolos suportados para expansão automática de volume:

    • Sistema de Arquivos de Rede

    • Internet Small Computer Systems Interface

    • Protocolo Fibre Channel

    • Non-Volatile Memory Express over Fabrics

Provisionar volumes com política de crescimento automático

A política de volume com crescimento automático pode ser configurada em dois níveis:

  • Nível da classe de armazenamento: define o padrão para todos os volumes (usando anotação)

  • Nível PVC: substitui o padrão da classe de armazenamento (usando anotação)

Criar uma política de crescimento automático

As políticas de crescimento automático permitem a expansão automática do volume quando os volumes atingem um limite de capacidade definido.

Certifique-se de ter:

  • Trident 26.02 ou posterior instalado

  • Permissões de controle de acesso baseadas em funções para criar TridentAutogrowPolicy recursos

  • Compreensão dos requisitos de crescimento da carga de trabalho

Uma Autogrow Policy define como os volumes se expandem automaticamente quando atingem um limite de capacidade definido.

Você pode criar políticas de crescimento automático em qualquer ponto do seu fluxo de trabalho:

  • Antes de StorageClasses e volumes serem criados

  • Após StorageClasses existirem

  • Após o provisionamento dos volumes

Essa flexibilidade permite que você introduza a expansão automática sem recriar os recursos existentes.

Especificações da política de volume com crescimento automático

As políticas de crescimento automático são recursos personalizados do Kubernetes definidos da seguinte forma:

Campo Descrição Formato Obrigatório Exemplo Padrão

nome

Identificador de política exclusivo

Cadeia de carateres

Sim

política-db-produção

Nenhum

usedThreshold

Percentual de capacidade que desencadeia a expansão

String de porcentagem

Sim

"80%"

Nenhum

growthAmount

Quantidade a crescer quando o limite for atingido

Porcentagem ou tamanho

Não

"10%" ou "5Gi"

"10%"

maxSize

Limite máximo de tamanho do volume

Quantidade de Kubernetes

Não

"500Gi"

Ilimitado

Criar uma política de crescimento automático

Passos
  1. Crie um arquivo YAML que defina sua Autogrow Policy:

    apiVersion: trident.netapp.io/v1
    kind: TridentAutogrowPolicy
    metadata:
      name: standard-autogrow
    spec:
      usedThreshold: "80%"
      growthAmount: "10%"
      maxSize: "500Gi"
  2. Aplique a política ao seu cluster:

    kubectl apply -f autogrow-policy.yaml
  3. Verifique se a política foi criada:

    kubectl get tridentautogrowpolicy standard-autogrow
    Resultado esperado
    NAME                USED THRESHOLD   GROWTH AMOUNT   STATE
    standard-autogrow   80%              10%             Success

Estados de política

Depois que você cria uma política, Trident valida a especificação e atribui um dos seguintes estados:

Estado Descrição Ação necessária

Sucesso

A política é validada e está pronta para uso.

Nenhum.

Falha

Foram detectados erros de validação.

Revise e corrija a especificação.

Excluindo

A exclusão está em andamento.

Aguarde a conclusão.

Associe uma política a um StorageClass

Você pode associar uma Autogrow Policy a um StorageClass usando a trident.netapp.io/autogrowPolicy anotação. Todos os volumes provisionados a partir desse StorageClass herdam a política.

Observação O StorageClass deve ter allowVolumeExpansion: true.
Passos
  1. Crie ou modifique uma StorageClass com a anotação de 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
  2. Aplique o StorageClass:

    kubectl apply -f storageclass.yaml
  3. Verifique a anotação:

    kubectl get storageclass ontap-gold -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
    Resultado esperado
    production-db-policy

Precedência de política

Quando as anotações da Política de Crescimento Automático são definidas tanto em um StorageClass quanto em um PVC, Trident aplica as seguintes regras de precedência:

  1. A anotação PVC tem prioridade. Se um PVC definir trident.netapp.io/autogrowPolicy, esse valor será sempre usado.

  2. StorageClass a anotação só se aplica quando o PVC não possui nenhuma anotação.

  3. Se nenhum dos dois tiver a anotação, nenhuma Autogrow Policy será aplicada.

StorageClass anotação Anotação PVC Comportamento eficaz

trident.netapp.io/autogrowPolicy: standard-agp

Não definido

Usos standard-agp.

trident.netapp.io/autogrowPolicy: standard-agp

trident.netapp.io/autogrowPolicy: logs-policy

Usa logs-policy (PVC substitui StorageClass).

trident.netapp.io/autogrowPolicy: standard-agp

trident.netapp.io/autogrowPolicy: "none"

Sem política de crescimento automático (PVC desativa o autogrow).

Não definido

trident.netapp.io/autogrowPolicy: dev-policy

Usos dev-policy.

Não definido

Não definido

Sem política de autogrow.

Exemplos de configuração

Os exemplos a seguir mostram configurações comuns de Autogrow Policy para diferentes casos de uso.

Política conservadora para bancos de dados de produção

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: production-db-policy
spec:
  usedThreshold: "75%"
  growthAmount: "20%"
  maxSize: "5Ti"

Armazenamento de logs com incrementos de crescimento fixos

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: log-storage-policy
spec:
  usedThreshold: "90%"
  growthAmount: "10Gi"
  maxSize: "100Gi"

Política mínima com valores padrão

Quando você omite growthAmount e maxSize, Trident usa os padrões (10% de crescimento, tamanho ilimitado):

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: logs-policy
spec:
  usedThreshold: "85%"

Política com um maxSize personalizado e growthAmount padrão

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: default-ga-policy
spec:
  usedThreshold: "70%"
  maxSize: "100Gi"

Crescimento agressivo com maxSize ilimitado

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: aggressive-growth-policy
spec:
  usedThreshold: "80%"
  growthAmount: "150%"

Política com percentuais fracionários

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: precise-policy
spec:
  usedThreshold: "80.28%"
  growthAmount: "10.65%"
  maxSize: "100Gi"
Observação São aceitas porcentagens fracionárias. Se você especificar mais de três casas decimais, Trident arredonda o valor para três casas decimais.

NAS StorageClass com 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 com Autogrow

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