Skip to main content
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Gestiona las políticas de Autogrow

Colaboradores joan-ing

Después de crear las políticas de Autogrow, puedes verlas, actualizarlas y eliminarlas. También puedes supervisar qué volúmenes usan una política determinada.

Ver políticas de Autogrow

Lista todas las políticas

Usa kubectl para listar todas las Autogrow Policies en tu cluster:

kubectl get tridentautogrowpolicy

O también, usa tridentctl:

tridentctl get autogrowpolicy

Ver detalles de la policy

Para ver la especificación completa y el estado de una política:

kubectl describe tridentautogrowpolicy production-db-policy

Para ver una política con sus volúmenes asociados en formato YAML:

tridentctl get autogrowpolicy production-db-policy -o yaml

Actualiza una política de Autogrow

Puedes modificar una política existente para cambiar su umbral, cantidad de crecimiento o tamaño máximo. Los cambios surten efecto de inmediato para todos los volúmenes que usan la política.

Importante Los cambios afectan a todos los volúmenes que utilizan la política. Cuando sea posible, prueba primero los cambios en un entorno que no sea de producción.
Pasos
  1. Edita la política:

    kubectl edit tridentautogrowpolicy production-db-policy
  2. Modifica los campos spec según lo necesites:

    spec:
      usedThreshold: "75%"    # Changed from 80%
      growthAmount: "20%"     # Changed from 10%
      maxSize: "1Ti"          # Changed from 500Gi
  3. Guarda y sal. Los cambios surten efecto inmediatamente.

Consideraciones de actualización

  • Efecto inmediato: Todos los volúmenes que usan la política adoptan los nuevos parámetros en la próxima evaluación de crecimiento.

  • No es necesario reiniciar el volumen: los cambios se aplican a la siguiente operación de crecimiento.

  • Prueba primero: Valida los cambios en un entorno que no sea de producción cuando sea posible.

  • Comunica los cambios: avisa a los equipos cuando modifiques las políticas compartidas.

Eliminar una política de Autogrow

Las políticas de Autogrow usan la protección del finalizador para evitar el borrado accidental mientras los volúmenes las usan activamente.

Pasos
  1. Elimina la política:

    kubectl delete tridentautogrowpolicy production-db-policy
  2. Si los volúmenes siguen utilizando la política, la eliminación pasa a un estado Deleting. Comprueba qué volúmenes se ven afectados:

    tridentctl get autogrowpolicy production-db-policy -o yaml
  3. Elimina la política de cada volumen afectado. Elige una de las siguientes opciones:

    • Opción A: desactivar explícitamente autogrow estableciendo la anotación en "none":

      kubectl annotate pvc <pvc-name> \
        trident.netapp.io/autogrowPolicy="none" \
        --overwrite
    • Opción B: eliminar por completo la anotación:

      kubectl annotate pvc <pvc-name> \
        trident.netapp.io/autogrowPolicy-

Comportamiento de borrado

Escenario Comportamiento

Ningún volumen usa la política

La política se elimina inmediatamente.

Los volúmenes utilizan la política

La política entra Deleting en estado. Un finalizador bloquea la finalización hasta que se eliminan todos los volúmenes.

Todos los volúmenes se eliminan de la política

Se eliminan los finalizadores y se elimina la política.

Supervisa el uso de la política Autogrow

Comprobar volúmenes usando una política

tridentctl get autogrowpolicy production-db-policy -o json | jq '.volumes'

Averigua qué política usa un volumen

kubectl get pvc database-pvc -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'

Supervisa los eventos de políticas

kubectl get events --field-selector involvedObject.kind=TridentAutogrowPolicy

Protocolos compatibles

Autogrow es compatible con los siguientes protocolos de almacenamiento:

  • NFS

  • ISCSI

  • FCP

  • NVMe

Nota Para volúmenes SAN, si el growthAmount configurado es de 50 MiB o menos, Trident aumenta automáticamente la cantidad de crecimiento a 51 MB para la operación de redimensionamiento, siempre que el tamaño resultante no supere maxSize.

Backends compatibles

Autogrow es compatible con los backends de ONTAP. Autogrow también es compatible con Google Cloud NetApp Volumes (GCNV) para volúmenes NAS y SAN.

Limitaciones conocidas

  • Volúmenes de bloques sin procesar ONTAP NVMe: Los volúmenes creados con versiones de ONTAP anteriores a 9.16.1 no admiten autogrow.

  • Volúmenes existentes (implementaciones en entornos ya existentes): Es posible que la función de autogrow no funcione con los volúmenes existentes, incluso si se aplica una Autogrow Policy válida. Esta limitación se debe a una migración en curso de publicaciones de volúmenes. Para confirmar que la migración se ha completado, revisa los registros del controlador Trident en busca de mensajes de "Migration completed".

Preguntas frecuentes

¿Cuándo evalúa Trident el umbral?

Trident supervisa continuamente el uso del volumen. Cuando la capacidad utilizada supera el usedThreshold, Trident crea una solicitud interna de redimensionamiento y amplía el volumen por la growthAmount configurada.

Por ejemplo, esta política activa la expansión al 80% de la capacidad y aumenta el volumen un 10% cada vez, hasta un máximo de 500 GiB:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: standard-autogrow
spec:
  usedThreshold: "80%"
  growthAmount: "10%"
  maxSize: "500Gi"

¿Puedo aplicar una política después de que los volúmenes ya estén aprovisionados?

Sí. Puedes crear una Autogrow Policy en cualquier momento y aplicarla a los PVC existentes añadiendo o actualizando la anotación trident.netapp.io/autogrowPolicy. No necesitas volver a crear el PVC ni el StorageClass.

Para aplicar una política a un PVC existente:

kubectl annotate pvc <pvc-name> \
  trident.netapp.io/autogrowPolicy="production-db-policy" \
  --overwrite

Para aplicar una política a un StorageClass existente:

kubectl annotate storageclass ontap-gold \
  trident.netapp.io/autogrowPolicy="production-db-policy" \
  --overwrite

¿Qué pasa si configuro una Autogrow Policy tanto en el StorageClass como en el PVC?

La anotación de PVC siempre tiene prioridad. Si un PVC tiene la trident.netapp.io/autogrowPolicy anotación, Trident usa ese valor sin importar lo que especifique StorageClass. Consulta "Precedencia de políticas" para más detalles.

Por ejemplo, dada esta 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

Y este PVC que anula la 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 utiliza logs-policy para database-pvc, no standard-agp.

¿Cómo desactivo el autogrow para un volumen específico?

Configura la anotación de PVC en "none". Esta configuración anula cualquier política a nivel de StorageClass para ese volumen:

kubectl annotate pvc <pvc-name> \
  trident.netapp.io/autogrowPolicy="none" \
  --overwrite

Puedes comprobar que autogrow está desactivado:

kubectl get pvc <pvc-name> -o jsonpath='{.metadata.annotations.trident\.netapp\.io/autogrowPolicy}'
Salida esperada
none

¿Qué pasa cuando un volumen llega a maxSize?

Trident deja de ampliar el volumen. No genera más solicitudes de redimensionamiento para ese volumen, aunque el uso siga aumentando más allá de usedThreshold.

Por ejemplo, con esta política, Trident deja de ampliar el volumen una vez que alcanza los 100 GiB:

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

Para permitir un crecimiento ilimitado, omite maxSize o configúralo en 0:

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

¿Puedo cambiar una política sin reiniciar los volúmenes?

Sí. Cuando actualizas una política, todos los volúmenes que usan esa política adoptan los nuevos parámetros en la siguiente evaluación de crecimiento. No es necesario reiniciar ningún volumen.

Para actualizar una política en vigor:

kubectl edit tridentautogrowpolicy production-db-policy

Modifica los campos según lo necesites:

spec:
  usedThreshold: "75%"    # Changed from 80%
  growthAmount: "20%"     # Changed from 10%
  maxSize: "1Ti"          # Changed from 500Gi

Guarda y sal. Verifica la política actualizada:

kubectl get tridentautogrowpolicy production-db-policy
Salida esperada
NAME                   USED THRESHOLD   GROWTH AMOUNT   STATE
production-db-policy   75%              20%             Success

¿Por qué mi policy está en estado Failed?

Un estado Failed indica que la especificación de la política contiene errores de validación. Ejecuta el siguiente comando para ver los detalles del error:

kubectl describe tridentautogrowpolicy <policy-name>

Las causas comunes incluyen un usedThreshold inválido (debe ser 1–99%), un growthAmount que excede maxSize o un formato de cantidad de Kubernetes inválido. Corrige la especificación y vuelve a aplicar:

kubectl apply -f autogrow-policy.yaml

¿Por qué no puedo eliminar una policy?

Las políticas utilizan la protección de finalizadores. Si los volúmenes siguen utilizando la política, la eliminación pasa a un estado Deleting y queda en espera hasta que elimines todos los volúmenes de la política.

Identifica los volúmenes afectados:

tridentctl get autogrowpolicy production-db-policy -o yaml

Luego elimina la anotación 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-

Después de que elimines todos los volúmenes, Trident libera el finalizador y elimina la política.

¿Qué backends admite la ampliación automática?

Autogrow es compatible con los backends de ONTAP. También es compatible con Google Cloud NetApp Volumes (GCNV) tanto para volúmenes NAS como SAN.

Autogrow es compatible con los protocolos NFS, iSCSI, FCP y NVMe. Los volúmenes de bloques sin procesar NVMe requieren ONTAP 9.16.1 o una versión posterior.

Es posible que los volúmenes existentes en implementaciones en entornos brownfield requieran que se complete la migración de la publicación de volúmenes antes de que el autogrow surta efecto. Para comprobar el estado de la migración, consulta los registros del controlador Trident:

kubectl logs -l app=trident-controller -n trident | grep "Migration completed"

Los siguientes ejemplos de StorageClass muestran autogrow configurado para backends NAS y 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

¿Cuál es la cantidad mínima de crecimiento para los volúmenes SAN?

Para volúmenes SAN, la cantidad mínima de crecimiento efectivo es de 51 MB. Si configuras un growthAmount de 50 MiB o menos, Trident aumenta automáticamente el crecimiento a 51 MB para la operación de redimensionamiento.

Por ejemplo, esta política establece un growthAmount de "40Mi", pero Trident aplica un crecimiento de 51 MB para cualquier volumen SAN que lo use:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: san-minimal-policy
spec:
  usedThreshold: "85%"
  growthAmount: "40Mi"
  maxSize: "100Gi"

Para evitar este ajuste automático, establece growthAmount en un valor mayor a 50 MiB:

apiVersion: trident.netapp.io/v1
kind: TridentAutogrowPolicy
metadata:
  name: san-policy
spec:
  usedThreshold: "85%"
  growthAmount: "100Mi"
  maxSize: "500Gi"