Skip to main content
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Scalabilità del controller

Collaboratori joan-ing

Trident migliora la scalabilità del controller grazie a una maggiore concorrenza tra più driver di storage. Quando abiliti la scalabilità del controller, il controller Trident elabora le operazioni di storage in parallelo invece di serializzarle, il che aumenta il throughput negli ambienti Kubernetes con molte operazioni simultanee.

Prima di distribuire, determina quali driver Trident supportano la scalabilità del controller nella disponibilità generale e quali driver sono disponibili come anteprima tecnica in Trident 26.06. Questo ti aiuta a prendere decisioni di distribuzione informate e a gestire il rischio. La scalabilità del controller è disabilitata per impostazione predefinita.

Concetti chiave e definizioni

Scalabilità del controller

La scalabilità del controller si riferisce alla capacità del controller Trident di elaborare più operazioni di storage in parallelo, anziché serializzarle dietro un singolo blocco. Queste operazioni includono la creazione, l'eliminazione e il ridimensionamento dei volumi; la creazione e l'eliminazione di snapshot; la pubblicazione e l'annullamento della pubblicazione dei volumi; e la gestione del backend.

Quando abiliti la scalabilità del controller, le operazioni su volumi e backend diversi procedono contemporaneamente. Questo aumenta il throughput e riduce il tempo di esecuzione end-to-end in ambienti con un elevato numero di operazioni PersistentVolumeClaim e VolumeSnapshot simultanee.

Comportamento predefinito (modalità seriale)

Per impostazione predefinita, il controller Trident elabora le operazioni una alla volta. Ogni richiesta di creazione, eliminazione, ridimensionamento o snapshot viene completata prima che Trident avvii la successiva. La modalità seriale è quella predefinita supportata per tutte le installazioni e non richiede configurazione.

La modalità seriale è sufficiente per la maggior parte dei carichi di lavoro. Abilita la scalabilità del controller solo quando il volume delle operazioni crea un accumulo durante l'elaborazione in modalità seriale.

Supporto per la scalabilità del controller

Trident supporta la scalabilità del controller a diversi livelli di maturità per diversi driver di storage.

Disponibilità generale

I seguenti driver supportano la scalabilità del controller alla disponibilità generale in Trident 26.06:

  • ontap-san

  • ontap-nas

  • ontap-nas-economy

  • ontap-san-economy

  • google-cloud-netapp-volumes

  • azure-netapp-files

  • solidfire-san

Nota

I google-cloud-netapp-volumes e google-cloud-netapp-volumes-san driver sono diversi. Trident supporta solo google-cloud-netapp-volumes. Non usare google-cloud-netapp-volumes-san nelle configurazioni o negli esempi di backend.

Anteprima tecnica

Il seguente driver supporta la scalabilità del controller come funzionalità in anteprima tecnica in Trident 26.06:

  • asa-r2 (SAN e NVMe)

Questo driver presenta le seguenti limitazioni:

  • La funzionalità di concorrenza del controller è disponibile solo per valutazione e test.

  • Il comportamento può cambiare da una versione all'altra.

  • NetApp non consiglia l'utilizzo in ambienti di produzione.

Come funziona enableConcurrency

Quando imposti enableConcurrency su true, Trident applica l'elaborazione simultanea a tutti i backend gestiti dal controller. L'impostazione si applica a tutti i backend contemporaneamente. Non puoi abilitarla per singoli backend o singoli driver.

Ogni backend configurato deve utilizzare un driver presente nell'elenco di disponibilità generale o di anteprima tecnica. Se un backend utilizza un driver non supportato, Trident non si avvia e Trident non aggiunge un backend che utilizza un driver non supportato.

Per ripristinare l'avvio, rimuovi o riconfigura qualsiasi backend che utilizza un driver non supportato oppure disabilita la scalabilità del controller.

Prima di abilitare

Importante

Prima di abilitare la scalabilità del controller, assicurati che ogni backend configurato utilizzi un driver presente nell'elenco di disponibilità generale o di anteprima tecnica. Se un backend utilizza un driver non supportato, Trident non si avvia dopo che hai abilitato la funzionalità.

Utilizza la tabella seguente per decidere se abilitare la scalabilità del controller.

Se il tuo ambiente Poi

Utilizzi solo driver supportati e riscontri un accumulo di operazioni del controller

Abilita la scalabilità del controller.

Utilizza un driver non supportato

Mantieni la modalità seriale predefinita. Non abilitare la scalabilità del controller.

Gestisce bassi volumi di operazioni senza arretrati

Mantieni la modalità seriale predefinita.

Abilita la scalabilità del controller

L' `enableConcurrency`opzione di configurazione controlla la scalabilità del controller. Devi abilitare esplicitamente questa opzione durante l'installazione di Trident o quando aggiorni una distribuzione esistente.

Distribuzione dell'operatore Trident

Per abilitare la scalabilità del controller con l'operatore Trident, imposta enableConcurrency su true nella TridentOrchestrator risorsa personalizzata (CR).

Nuova installazione

Crea o modifica il TridentOrchestrator CR e imposta enableConcurrency su true:

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

Applicare la CR:

kubectl apply -f tridentorchestrator_cr.yaml

Installazione esistente

Applicare una patch al TridentOrchestrator CR esistente per abilitare la scalabilità del controller:

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

Verifica che Trident abbia applicato l'impostazione:

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

Distribuzione Helm

Per abilitare la scalabilità del controller con Helm, impostare il enableConcurrency valore su true.

Nuova installazione

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

Installazione esistente

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

In alternativa, imposta enableConcurrency su true in un file values.yaml personalizzato:

# values.yaml
enableConcurrency: true

Quindi installa o aggiorna utilizzando il file dei valori:

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

implementazione tridentctl

Per abilitare la scalabilità del controller con tridentctl, passare il --enable-concurrency flag durante l'installazione.

Nuova installazione

tridentctl install -n trident --enable-concurrency

Installazione esistente

Per abilitare la scalabilità del controller su una distribuzione `tridentctl`esistente, disinstalla Trident e reinstallalo con il flag:

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

Verifica che la scalabilità del controller sia abilitata

Dopo aver abilitato la scalabilità del controller, verifica che il controller Trident sia in esecuzione con la concorrenza abilitata. Controlla i log del pod del controller:

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

L'output include una voce di registro che conferma che la concorrenza è abilitata.

Comportamento della concorrenza

Quando la scalabilità del controller è abilitata, il controller Trident adotta il seguente comportamento:

  • Trident sostituisce il blocco globale singolo con un blocco granulare per risorsa.

  • Trident serializza le operazioni che modificano la stessa risorsa per mantenere la coerenza dei dati.

  • Le operazioni che si limitano a leggere da una risorsa procedono contemporaneamente ad altre operazioni di lettura su quella risorsa.

  • Trident limita le richieste API ONTAP simultanee a 20 per LIF di gestione per evitare il sovraccarico dei sistemi di storage di backend.

  • Se più backend condividono lo stesso LIF di gestione, condividono questo limite di 20 richieste.

Avvertenze e limitazioni

Le seguenti considerazioni si applicano alla scalabilità del controller in Trident 26.06:

  • La scalabilità del controller supporta solo i driver presenti negli elenchi di disponibilità generale e di anteprima tecnica. Per dettagli, vedi Prima di abilitare.

  • Il controller Trident gestisce la concorrenza internamente. Questa versione non prevede limiti di concorrenza configurabili dall'utente.

  • Il throughput complessivo dipende dal driver di storage in uso, dalla reattività del backend e dalle prestazioni del server API di Kubernetes.

  • Un'elevata concorrenza può aumentare il carico sui sistemi di storage back-end.

  • Il comportamento di scalabilità del controller non è identico per tutti i driver.

  • Il driver di anteprima tecnica può presentare prestazioni incoerenti sotto carico elevato e può cambiare comportamento tra una versione e l'altra.

  • Il debug di operazioni concorrenti può risultare più complesso a causa dell'esecuzione parallela. Metriche e log possono mostrare l'output delle operazioni interlacciate.

Raccomandazioni

Prima di abilitare la scalabilità del controller, completa i seguenti passaggi:

  1. Conferma che ogni backend configurato utilizza un driver presente nell'elenco di disponibilità generale o di anteprima tecnica.

  2. Testa la modifica in un cluster non di produzione prima di applicarla in produzione.

  3. Verifica che la scalabilità del controller sia abilitata dopo aver applicato la modifica.

Applica le seguenti raccomandazioni generali quando lavori con la scalabilità del controller:

  • Usa i driver di disponibilità generale per gli ambienti di produzione che richiedono un'elevata scalabilità.

  • Valuta il driver di anteprima tecnica solo in ambienti non di produzione.

  • Monitora le prestazioni del backend e del controller quando operi su larga scala.

  • Non dare per scontato l'ordine delle operazioni negli script di automazione.