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.

Escalabilidad del controlador

Colaboradores joan-ing

Trident mejora la escalabilidad del controlador gracias a una mayor concurrencia entre múltiples controladores de almacenamiento. Al habilitar la escalabilidad del controlador, el controlador de Trident procesa las operaciones de almacenamiento en paralelo en lugar de hacerlo en serie, lo que aumenta el rendimiento en entornos de Kubernetes con numerosas operaciones simultáneas.

Antes de realizar la implementación, comprueba qué controladores de Trident admiten la escalabilidad del controlador en su versión de disponibilidad general y cuáles están disponibles como vista previa técnica en Trident 26.06. Esto te ayuda a tomar decisiones de implementación fundamentadas y a gestionar el riesgo. La escalabilidad del controlador está desactivada de forma predeterminada.

Conceptos clave y definiciones

Escalabilidad del controlador

La escalabilidad del controlador se refiere a la capacidad del controlador Trident para procesar múltiples operaciones de almacenamiento en paralelo, en lugar de serializarlas tras un único bloqueo. Estas operaciones incluyen la creación, eliminación y cambio de tamaño de volúmenes; la creación y eliminación de instantáneas; la publicación y retirada de volúmenes; y la gestión del backend.

Al habilitar la escalabilidad del controlador, las operaciones en diferentes volúmenes y backends se ejecutan de forma simultánea. Esto aumenta el rendimiento y reduce el tiempo de ejecución de principio a fin en entornos con un elevado número de operaciones simultáneas de PersistentVolumeClaim y VolumeSnapshot.

Comportamiento predeterminado (modo serie)

De forma predeterminada, el controlador Trident procesa las operaciones una por una. Cada solicitud de creación, eliminación, cambio de tamaño o instantánea se completa antes de que Trident inicie la siguiente. El modo serie es el valor predeterminado compatible con todas las instalaciones y no requiere configuración alguna.

El modo serie es suficiente para la mayoría de las cargas de trabajo. Activa la escalabilidad del controlador solo cuando el volumen de operaciones genere un retraso en el procesamiento en serie.

Compatibilidad con la escalabilidad del controlador

Trident admite la escalabilidad de los controladores en distintos niveles de madurez para diferentes controladores de almacenamiento.

Disponibilidad general

Los siguientes drivers soportan la escalabilidad del controlador en disponibilidad general en Trident 26.06:

  • ontap-san

  • ontap-nas

  • ontap-nas-economy

  • ontap-san-economy

  • google-cloud-netapp-volumes

  • azure-netapp-files

  • solidfire-san

Nota

Los controladores google-cloud-netapp-volumes y google-cloud-netapp-volumes-san son diferentes. Trident solo es compatible con google-cloud-netapp-volumes. No utilices google-cloud-netapp-volumes-san en las configuraciones del backend ni en los ejemplos.

Avance técnico

El siguiente controlador admite la escalabilidad del controlador como función de vista previa técnica en Trident 26.06:

  • asa-r2 (SAN y NVMe)

Este controlador presenta las siguientes limitaciones:

  • La concurrencia de controladores está disponible únicamente para evaluación y pruebas.

  • El comportamiento puede variar de una versión a otra.

  • NetApp no recomienda su uso en entornos de producción.

Cómo funciona enableConcurrency

Cuando configuras enableConcurrency en true, Trident aplica el procesamiento simultáneo en todos los backends que gestiona el controlador. La configuración se aplica a todos los backends a la vez. No puedes habilitarlo para backends individuales ni para drivers individuales.

Cada backend configurado debe utilizar un controlador que figure en la lista de disponibilidad general o de vista previa técnica. Si algún backend utiliza un controlador no compatible, Trident no se inicia y Trident no añade un backend que utilice un controlador no compatible.

Para restablecer el arranque, elimina o reconfigura cualquier backend que utilice un controlador no compatible o desactiva la escalabilidad del controlador.

Antes de activar

Importante

Antes de habilitar la escalabilidad del controlador, comprueba que todos los backends configurados utilicen un controlador que figure en la lista de disponibilidad general o de vista previa técnica. Si algún backend utiliza un controlador no compatible, Trident no se inicia después de habilitar la función.

Utiliza la siguiente tabla para decidir si deseas habilitar la escalabilidad del controlador.

Si tu entorno Entonces

Utiliza únicamente controladores compatibles y presenta un retraso en las operaciones del controlador

Habilita la escalabilidad del controlador.

Utiliza cualquier controlador no compatible

Mantén el modo serie predeterminado. No actives la escalabilidad del controlador.

Gestiona un volumen de operaciones bajo sin acumular retrasos

Mantén el modo serie predeterminado.

Habilita la escalabilidad del controlador

La opción de configuración enableConcurrency controla la escalabilidad del controlador. Debes habilitar esta opción de forma explícita durante la instalación de Trident o cuando actualices una implementación existente.

Despliegue del operador Trident

Para habilitar la escalabilidad del controlador con el operador Trident, configura enableConcurrency en true en el recurso personalizado (CR) TridentOrchestrator.

Nueva instalación

Crea o edita el TridentOrchestrator CR y establece enableConcurrency en true:

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  namespace: trident
  enableConcurrency: true

Aplicar el CR:

kubectl apply -f tridentorchestrator_cr.yaml

Instalación existente

Aplica un parche a la TridentOrchestrator CR existente para habilitar la escalabilidad del controlador:

kubectl patch torc trident --type=merge -p '{"spec":{"enableConcurrency":true}}'

Comprueba que Trident haya aplicado la configuración:

kubectl get torc trident -o jsonpath='{.status.currentInstallationParams.enableConcurrency}'

Despliegue con Helm

Para activar la escalabilidad del controlador con Helm, establece el valor enableConcurrency a true.

Nueva instalación

helm install trident netapp-trident/trident-operator --namespace trident --create-namespace --set enableConcurrency=true

Instalación existente

helm upgrade trident netapp-trident/trident-operator --namespace trident --set enableConcurrency=true

Como alternativa, establece enableConcurrency en true en un archivo values.yaml personalizado:

# values.yaml
enableConcurrency: true

Luego instala o actualiza con el archivo de valores:

helm install trident netapp-trident/trident-operator --namespace trident --create-namespace -f values.yaml

implementación de tridentctl

Para habilitar la escalabilidad del controlador con tridentctl, pasa la bandera --enable-concurrency durante la instalación.

Nueva instalación

tridentctl install -n trident --enable-concurrency

Instalación existente

Para habilitar la escalabilidad del controlador en una implementación existente tridentctl, desinstala Trident y vuelve a instalarlo con el parámetro:

tridentctl uninstall -n trident
tridentctl install -n trident --enable-concurrency

Comprueba que la escalabilidad del controlador esté activada

Una vez que habilites la escalabilidad del controlador, verifica que el controlador Trident se esté ejecutando con la concurrencia activada. Revisa los registros del pod del controlador:

kubectl logs -n trident deploy/trident-controller | grep -i concurrency

La salida incluye una entrada en el registro que confirma que la concurrencia está habilitada.

Comportamiento de la concurrencia

Cuando se habilita la escalabilidad del controlador, el controlador Trident aplica el siguiente comportamiento:

  • Trident sustituye el bloqueo global único por un sistema de bloqueo más detallado, específico para cada recurso.

  • Trident serializa las operaciones que modifican el mismo recurso para mantener la coherencia de los datos.

  • Las operaciones que solo leen de un recurso se ejecutan de forma concurrente con otras operaciones de lectura en ese mismo recurso.

  • Trident limita a 20 el número de solicitudes simultáneas de la API de ONTAP por cada LIF de gestión para evitar la sobrecarga de los sistemas de almacenamiento backend.

  • Si varios backends comparten el mismo LIF de gestión, comparten este límite de 20 solicitudes.

Advertencias y limitaciones

Las siguientes consideraciones se aplican a la escalabilidad de los controladores en Trident 26.06:

  • La escalabilidad del controlador solo es compatible con los controladores que figuran en las listas de disponibilidad general y de vista previa técnica. Para obtener más información, consulta Antes de activar.

  • El controlador Trident gestiona la concurrencia de forma interna. Esta versión no ofrece límites de concurrencia configurables por el usuario.

  • El rendimiento global depende del controlador de almacenamiento en uso, la capacidad de respuesta del backend y el rendimiento del servidor de la API de Kubernetes.

  • Una elevada concurrencia puede aumentar la carga en los sistemas de almacenamiento del backend.

  • El comportamiento de la escalabilidad del controlador no es idéntico en todos los drivers.

  • El controlador de la versión preliminar técnica puede presentar un rendimiento irregular bajo cargas elevadas y su comportamiento puede variar entre versiones.

  • La depuración de operaciones concurrentes puede resultar más compleja debido a la ejecución en paralelo. Las métricas y los registros pueden mostrar resultados de operaciones entremezclados.

Recomendaciones

Antes de habilitar la escalabilidad del controlador, completa los siguientes pasos:

  1. Comprueba que todos los backends configurados utilicen un controlador que esté en la lista de disponibilidad general o de vista previa técnica.

  2. Prueba el cambio en un clúster que no sea de producción antes de aplicarlo en el entorno de producción.

  3. Comprueba que la escalabilidad del controlador esté activada después de aplicar el cambio.

Aplica las siguientes recomendaciones generales cuando trabajes con la escalabilidad del controlador:

  • Utiliza controladores de disponibilidad general para entornos de producción que requieran alta escalabilidad.

  • Prueba el controlador de la versión preliminar técnica únicamente en entornos que no sean de producción.

  • Supervisa el rendimiento del backend y de los controladores cuando operas a gran escala.

  • No des por sentado el orden de las operaciones en los scripts de automatización.