Skip to main content
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Évolutivité du contrôleur

Contributeurs joan-ing

Trident améliore la scalabilité du contrôleur grâce à une concurrence accrue sur plusieurs pilotes de stockage. Lorsque vous activez la scalabilité du contrôleur, le contrôleur Trident traite les opérations de stockage en parallèle au lieu de les sérialiser, ce qui augmente le débit dans les environnements Kubernetes comportant de nombreuses opérations simultanées.

Avant le déploiement, déterminez quels pilotes Trident prennent en charge la mise à l'échelle du contrôleur à la disponibilité générale et quels pilotes sont disponibles en version préliminaire technique dans Trident 26.06. Cela vous aide à prendre des décisions éclairées concernant le déploiement et à gérer les risques. La mise à l'échelle du contrôleur est désactivée par défaut.

Concepts clés et définitions

Évolutivité du contrôleur

La scalabilité du contrôleur fait référence à la capacité du contrôleur Trident à traiter plusieurs opérations de stockage en parallèle, au lieu de les sérialiser derrière un seul verrou. Ces opérations comprennent la création, la suppression et le redimensionnement de volumes ; la création et la suppression d’instantanés ; la publication et la dépublication de volumes ; et la gestion du backend.

Lorsque vous activez la scalabilité du contrôleur, les opérations sur différents volumes et backends s'exécutent simultanément. Cela augmente le débit et réduit le temps d'exécution global dans les environnements comportant un grand nombre d'opérations PersistentVolumeClaim et VolumeSnapshot simultanées.

Comportement par défaut (mode série)

Par défaut, le contrôleur Trident traite les opérations une à une. Chaque requête de création, de suppression, de redimensionnement ou de capture instantanée est terminée avant que Trident ne lance la suivante. Le mode série est le mode par défaut pris en charge pour toutes les installations et ne nécessite aucune configuration.

Le mode séquentiel est suffisant pour la plupart des charges de travail. N'activez la mise à l'échelle du contrôleur que lorsque le volume d'opérations crée un engorgement en mode séquentiel.

Prise en charge de l'évolutivité du contrôleur

Trident prend en charge l'évolutivité du contrôleur à différents niveaux de maturité pour différents pilotes de stockage.

Disponibilité générale

Les pilotes suivants prennent en charge la mise à l'échelle du contrôleur à la disponibilité générale dans Trident 26.06 :

  • ontap-san

  • ontap-nas

  • ontap-nas-economy

  • ontap-san-economy

  • google-cloud-netapp-volumes

  • azure-netapp-files

  • solidfire-san

Remarque

Les google-cloud-netapp-volumes et google-cloud-netapp-volumes-san pilotes sont différents. Trident prend uniquement en charge google-cloud-netapp-volumes. N'utilisez pas google-cloud-netapp-volumes-san dans les configurations ou exemples de backend.

Aperçu technique

Le pilote suivant prend en charge la mise à l'échelle du contrôleur en tant que fonctionnalité en avant-première technique dans Trident 26.06 :

  • asa-r2 (SAN et NVMe)

Ce pilote présente les limitations suivantes :

  • La gestion de la concurrence des contrôleurs est disponible uniquement à des fins d'évaluation et de test.

  • Le comportement peut changer d'une version à l'autre.

  • NetApp ne recommande pas l'utilisation en environnement de production.

Comment enableConcurrency fonctionne

Lorsque vous définissez enableConcurrency sur true, Trident applique un traitement simultané à tous les backends gérés par le contrôleur. Ce paramètre s'applique à tous les backends en même temps. Vous ne pouvez pas l'activer pour des backends ou des pilotes individuels.

Chaque backend configuré doit utiliser un pilote figurant dans la liste de disponibilité générale ou de préversion technique. Si un backend utilise un pilote non pris en charge, Trident ne démarre pas et Trident n'ajoute pas de backend utilisant un pilote non pris en charge.

Pour rétablir le démarrage, supprimez ou reconfigurez tout backend utilisant un pilote non pris en charge ou désactivez la scalabilité du contrôleur.

Avant d'activer

Important

Avant d'activer la mise à l'échelle du contrôleur, vérifiez que chaque backend configuré utilise un pilote figurant dans la liste de disponibilité générale ou de préversion technique. Si un backend utilise un pilote non pris en charge, Trident ne démarre pas après l'activation de cette fonctionnalité.

Utilisez le tableau suivant pour décider d'activer ou non la mise à l'échelle du contrôleur.

Si votre environnement Ensuite

Utilise uniquement les pilotes pris en charge et rencontre un retard dans les opérations du contrôleur

Activez la scalabilité du contrôleur.

Utilise n'importe quel pilote non pris en charge

Conservez le mode série par défaut. N’activez pas la mise à l’échelle du contrôleur.

Gère un faible volume d'opérations sans arriérés

Conservez le mode série par défaut.

Activer la scalabilité du contrôleur

L’ `enableConcurrency`option de configuration contrôle la scalabilité du contrôleur. Vous devez activer explicitement cette option lors de l’installation de Trident ou lors de la mise à jour d’un déploiement existant.

Déploiement de l'opérateur Trident

Pour activer la scalabilité du contrôleur avec l’opérateur Trident, définissez enableConcurrency sur true dans la TridentOrchestrator ressource personnalisée (CR).

Nouvelle installation

Créez ou modifiez le TridentOrchestrator`CR et définissez `enableConcurrency`sur `true :

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

Appliquer la CR :

kubectl apply -f tridentorchestrator_cr.yaml

Installation existante

Corrigez le TridentOrchestrator CR existant pour activer l'évolutivité du contrôleur :

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

Vérifiez que Trident a appliqué le paramètre :

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

Déploiement Helm

Pour activer la scalabilité du contrôleur avec Helm, définissez la valeur enableConcurrency sur true.

Nouvelle installation

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

Installation existante

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

Vous pouvez également définir enableConcurrency sur true dans un fichier values.yaml personnalisé :

# values.yaml
enableConcurrency: true

Installez ou mettez à jour ensuite avec le fichier de valeurs :

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

déploiement tridentctl

Pour activer la scalabilité du contrôleur avec tridentctl, transmettez le drapeau --enable-concurrency lors de l'installation.

Nouvelle installation

tridentctl install -n trident --enable-concurrency

Installation existante

Pour activer la mise à l'échelle du contrôleur sur un déploiement tridentctl existant, désinstallez Trident et réinstallez-le avec l'indicateur :

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

Vérifiez que la mise à l'échelle du contrôleur est activée

Après avoir activé la mise à l'échelle du contrôleur, vérifiez que le contrôleur Trident s'exécute avec la concurrence activée. Consultez les journaux du pod du contrôleur :

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

Le résultat comprend une entrée de journal confirmant que la concurrence est activée.

Comportement de concurrence

Lorsque la mise à l'échelle du contrôleur est activée, le contrôleur Trident adopte le comportement suivant :

  • Trident remplace le verrou global unique par un verrouillage précis, par ressource.

  • Trident sérialise les opérations qui modifient la même ressource afin de maintenir la cohérence des données.

  • Les opérations qui ne font que lire une ressource s'exécutent simultanément avec d'autres opérations de lecture sur cette ressource.

  • Trident limite le nombre de requêtes API ONTAP simultanées à 20 par LIF de gestion afin d’éviter la surcharge des systèmes de stockage backend.

  • Si plusieurs backends partagent le même LIF de gestion, ils partagent cette limite de 20 requêtes.

Avertissements et limitations

Les considérations suivantes s'appliquent à l'évolutivité du contrôleur dans Trident 26.06 :

  • La mise à l'échelle du contrôleur ne prend en charge que les pilotes figurant dans les listes de disponibilité générale et d'aperçu technique. Pour plus de détails, consultez Avant d'activer.

  • Le contrôleur Trident gère la concurrence en interne. Cette version ne propose aucune limite de concurrence configurable par l'utilisateur.

  • Le débit global dépend du pilote de stockage utilisé, de la réactivité du backend et des performances du serveur API Kubernetes.

  • Une forte concurrence peut augmenter la charge sur les systèmes de stockage backend.

  • Le comportement de mise à l'échelle du contrôleur n'est pas identique pour tous les pilotes.

  • Le pilote en préversion technique peut présenter des performances incohérentes en cas de charge élevée et son comportement peut changer d'une version à l'autre.

  • Le débogage des opérations concurrentes peut s'avérer plus complexe en raison de l'exécution parallèle. Les métriques et les journaux peuvent afficher les résultats des opérations entrelacées.

Recommandations

Avant d'activer la mise à l'échelle du contrôleur, complétez les étapes suivantes :

  1. Confirmez que chaque backend configuré utilise un pilote figurant dans la liste de disponibilité générale ou de préversion technique.

  2. Testez la modification sur un cluster hors production avant de l'appliquer en production.

  3. Vérifiez que la mise à l'échelle du contrôleur est activée après avoir appliqué la modification.

Appliquez les recommandations générales suivantes lorsque vous utilisez la mise à l'échelle du contrôleur :

  • Utilisez des pilotes à disponibilité générale pour les environnements de production nécessitant une évolutivité élevée.

  • Évaluez le pilote en préversion technique uniquement dans des environnements hors production.

  • Surveillez les performances du backend et du contrôleur lorsque vous opérez à grande échelle.

  • Ne présumez pas de l'ordre des opérations dans les scripts d'automatisation.