Évolutivité du contrôleur
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
|
|
Les |
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
|
|
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 :
-
Confirmez que chaque backend configuré utilise un pilote figurant dans la liste de disponibilité générale ou de préversion technique.
-
Testez la modification sur un cluster hors production avant de l'appliquer en production.
-
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.