Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Implementare il driver FSx per Lustre
Questo argomento illustra come implementare il driver CSI per FSx per Lustre nel cluster Amazon EKS e come verificarne il funzionamento. Ti consigliamo di utilizzare sempre la versione più recente del driver. Per conoscere le versioni disponibili, consulta CSI Specification Compatibility Matrix
Nota
Il driver non è supportato su Fargate o Amazon EKS Hybrid Nodes.
Per una descrizione dettagliata dei parametri disponibili ed esempi completi che illustrano le caratteristiche del driver, consulta il progetto Driver Container Storage Interface (CSI) per FSx per Lustre
Prerequisiti
-
Un cluster esistente.
-
Il componente aggiuntivo Amazon FSx CSI Driver EKS richiede l’agente EKS Pod Identity per l’autenticazione. Senza questo componente, il componente aggiuntivo fallirà con l’errore
Amazon EKS Pod Identity agent is not installed in the cluster, impedendo le operazioni di volume. Installa l’agente Pod Identity prima o dopo l’implementazione del componente aggiuntivo FSx CSI Driver. Per ulteriori informazioni, consulta Configurazione dell’agente Amazon EKS Pod Identity. -
La versione
2.12.3o successive oppure1.27.160o successive dell’interfaccia a riga di comando AWS (AWS CLI) installata e configurata sul dispositivo o in AWS CloudShell. Per verificare la versione attuale, usaaws --version | cut -d / -f2 | cut -d ' ' -f1. I programmi di gestione dei pacchetti, comeyum,apt-geto Homebrew per macOS, spesso sono aggiornati a versioni precedenti di AWS CLI. Per installare la versione più recente, consulta Installing e Quick configuration with aws configure nella Guida per l’utente dell’interfaccia a riga di comando AWS. La versione della AWS CLI installata in AWS CloudShell potrebbe anche essere di diverse versioni precedenti alla più recente. Per aggiornarla, consulta Installing AWS CLI to your home directory nella Guida per l’utente di AWS CloudShell. -
Versione
0.214.0o successive dello strumento a riga di comandoeksctlinstallata sul dispositivo o in AWS CloudShell. Per l’installazione o l’aggiornamento dieksctl, consulta la sezione Installationnella documentazione di eksctl. -
Lo strumento a riga di comando
kubectlè installato sul dispositivo o su AWS CloudShell. La versione può essere uguale oppure immediatamente precedente o successiva a quella di Kubernetes del cluster. Ad esempio, se la versione del cluster è1.29, puoi usarekubectlversione1.28,1.29o1.30. Per installare o aggiornarekubectl, consulta Impostazione di kubectl e eksctl:
Passaggio 1: Creazione di un ruolo IAM
Il plug-in CSI per Amazon FSx richiede autorizzazioni IAM per effettuare chiamate alle API AWS per conto dell’utente.
Nota
I pod avranno accesso alle autorizzazioni assegnate al ruolo IAM, a meno che non si blocchi l’accesso a IMDS. Per ulteriori informazioni, consulta Protezione dei cluster Amazon EKS con le best practice.
La procedura seguente mostra come creare un ruolo IAM e collegarci la policy gestita da AWS.
-
Crea un ruolo IAM e collega la policy gestita da AWS con il comando seguente. Sostituisci
my-clustercon il nome del cluster che desideri utilizzare. Il comando implementa uno stack AWS CloudFormation che crea un ruolo IAM e vi collega la policy IAM.eksctl create iamserviceaccount \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_FSx_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonFSxFullAccess \ --approveVisualizzerai diverse righe di output quando l’account del servizio viene creato. Le ultime righe dell’output sono simili a quelle riportate di seguito.
[ℹ] 1 task: { 2 sequential sub-tasks: { create IAM role for serviceaccount "kube-system/fsx-csi-controller-sa", create serviceaccount "kube-system/fsx-csi-controller-sa", } } [ℹ] building iamserviceaccount stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] deploying stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] waiting for CloudFormation stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] created serviceaccount "kube-system/fsx-csi-controller-sa"Prendi nota del nome dello stack AWS CloudFormation che è stato distribuito. Nell’output di esempio precedente, lo stack è denominato
eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa.
Ora che hai creato il ruolo IAM del driver CSI di Amazon FSx, puoi passare alla sezione successiva. Quando implementi il componente aggiuntivo con il ruolo IAM, questo crea e viene configurato per l’utilizzo di un account di servizio denominato fsx-csi-controller-sa. L’account di servizio è associato a un clusterrole Kubernetes, a cui sono assegnate le autorizzazioni Kubernetes richieste.
Passaggio 2: installazione del driver CSI di Amazon FSx
Ti consigliamo di installare il driver CSI di Amazon FSx attraverso il componente aggiuntivo di Amazon EKS per migliorare la sicurezza e ridurre le attività. Per aggiungere un componente aggiuntivo di Amazon EKS al cluster, consulta Creare un componente aggiuntivo Amazon EKS. Per ulteriori informazioni sui componenti aggiuntivi, consulta Componenti aggiuntivi Amazon EKS.
Importante
Le installazioni preesistenti del driver CSI di Amazon FSx nel cluster possono causare errori di installazione dei componenti aggiuntivi. Quando tenti di installare la versione del componente aggiuntivo Amazon EKS mentre esiste un driver CSI FSx non EKS, l’installazione avrà esito negativo a causa di conflitti di risorse. Usa il flag OVERWRITE durante l’installazione per risolvere il problema.
aws eks create-addon --addon-name aws-fsx-csi-driver --cluster-name my-cluster --resolve-conflicts OVERWRITE
In alternativa, se desideri un’installazione autogestita del driver CSI per Amazon FSx, consulta la pagina Installation
Passaggio 3: implementazione di una classe di archiviazione, una dichiarazione di volume persistente e un’app di esempio
Questa procedura utilizza il driver CSI (Container Storage Interface) di FSx per Lustre
-
Annota il gruppo di sicurezza per il cluster. Puoi visualizzarlo nella sezione Reti della Console di gestione AWS o utilizzando il comando AWS CLI seguente. Sostituisci
my-clustercon il nome del cluster che desideri utilizzare.aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId -
Crea un gruppo di sicurezza per il file system Amazon FSx in base ai criteri indicati nella sezione Gruppi di sicurezza Amazon VPC della Guida per l’utente di Amazon FSx per Lustre. Per il VPC, seleziona il VPC del cluster come mostrato nella sezione Reti. Per i "gruppi di sicurezza associati ai client Lustre", usa il gruppo di sicurezza del cluster. Non specificare alcun valore nelle regole in uscita per consentire Tutto il traffico.
-
Scarica il manifesto della classe di storage con il comando seguente.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml -
Modifica la sezione dei parametri del file
storageclass.yaml. Sostituisci ogni valore esemplificativo con i tuoi valori.parameters: subnetId: subnet-0eabfaa81fb22bcaf securityGroupIds: sg-068000ccf82dfba88 deploymentType: PERSISTENT_1 automaticBackupRetentionDays: "1" dailyAutomaticBackupStartTime: "00:00" copyTagsToBackups: "true" perUnitStorageThroughput: "200" dataCompressionType: "NONE" weeklyMaintenanceStartTime: "7:09:00" fileSystemTypeVersion: "2.12"-
subnetId– l’ID della sottorete in cui creare il file system Amazon FSx per Lustre. Amazon FSx per Lustre non è supportato in tutte le zone di disponibilità. Apri la console Amazon FSx per Lustre all’indirizzo https://console.aws.amazon.com/fsx/per confermare che la sottorete che desideri utilizzare si trovi in una zona di disponibilità supportata. La sottorete può includere i nodi oppure può essere una sottorete o un VPC differente: -
Puoi verificare la presenza delle sottoreti dei nodi nella Console di gestione AWS selezionando il gruppo di nodi nella sezione Compute (Calcolo).
-
Se la sottorete specificata non è la stessa in cui sono presenti i nodi, i VPC devono essere connessi, pertanto devi verificare che le porte richieste siano aperte nei gruppi di sicurezza.
-
-
securityGroupIds– l’ID del gruppo di sicurezza creato per il file system. -
deploymentType(facoltativo): il tipo di implementazione del file system. I valori validi sonoSCRATCH_1,SCRATCH_2,PERSISTENT_1ePERSISTENT_2. Per ulteriori informazioni sui tipi di implementazione, consulta Create your Amazon FSx for Lustre file system. -
Altri parametri (facoltativo)— Per informazioni sugli altri parametri, consulta Edit StorageClass
(Modificare StorageClass) su GitHub.
-
-
Crea il manifesto della classe di storage.
kubectl apply -f storageclass.yamlDi seguito viene riportato un output di esempio:
storageclass.storage.k8s.io/fsx-sc created -
Scaricare il manifesto della dichiarazione di volume persistente.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/claim.yaml -
(Facoltativo) Modificare il file
claim.yaml. Cambia1200Giin uno dei valori di incremento riportati di seguito in base ai tuoi requisiti di archiviazione e aldeploymentTypeselezionato in un passaggio precedente.storage: 1200Gi-
SCRATCH_2ePERSISTENT–1.2 TiB,2.4 TiBo incrementi di 2,4 TiB su 2,4 TiB. -
SCRATCH_1–1.2 TiB,2.4 TiB,3.6 TiBo incrementi di 3,6 TiB su 3,6 TiB.
-
-
Creare la dichiarazione di volume persistente.
kubectl apply -f claim.yamlDi seguito viene riportato un output di esempio:
persistentvolumeclaim/fsx-claim created -
Verificare che il file system sia stato sottoposto a provisioning.
kubectl describe pvcDi seguito viene riportato un output di esempio:
Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]Nota
Statuspuò apparirePendingper 5-10 minuti, prima di passare aBound. Non continuare con il passo successivo fino a quandoStatusnon èBound. Se nel campoStatusviene visualizzatoPendingper più di 10 minuti, utilizza i messaggi di avviso negliEventscome riferimento per risolvere eventuali problemi. -
Implementare un’applicazione di esempio.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/pod.yaml -
Verificare che l’applicazione di esempio sia in esecuzione.
kubectl get podsDi seguito viene riportato un output di esempio:
NAME READY STATUS RESTARTS AGE fsx-app 1/1 Running 0 8s -
Verifica che l’applicazione abbia montato correttamente il file system.
kubectl exec -ti fsx-app -- df -hDi seguito viene riportato un output di esempio:
Filesystem Size Used Avail Use% Mounted on overlay 80G 4.0G 77G 5% / tmpfs 64M 0 64M 0% /dev tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup 192.0.2.0@tcp:/abcdef01 1.1T 7.8M 1.1T 1% /data /dev/nvme0n1p1 80G 4.0G 77G 5% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 6.9G 12K 6.9G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 3.8G 0 3.8G 0% /proc/acpi tmpfs 3.8G 0 3.8G 0% /sys/firmware -
Verifica che i dati siano stati scritti nel file system FSx per Lustre dall’app di esempio.
kubectl exec -it fsx-app -- ls /dataDi seguito viene riportato un output di esempio:
out.txtQuesto output esemplificativo mostra che l’app di esempio ha eseguito correttamente la scrittura del file
out.txtnel file system.
Nota
Prima di eliminare il cluster, assicurati di eliminare il file system FSx per Lustre. Per ulteriori informazioni, consulta Eliminazione di risorse nella Guida per l’utente di FSx per Lustre.
Ottimizzazione delle prestazioni per FSx per Lustre
Quando si utilizza FSx per Lustre con Amazon EKS, puoi ottimizzare le prestazioni applicando le ottimizzazioni Lustre durante l’inizializzazione del nodo. L’approccio consigliato consiste nell’utilizzare i dati utente del modello di avvio per garantire una configurazione coerente su tutti i nodi.
Queste ottimizzazioni includono:
-
Ottimizzazioni di rete e RPC
-
Gestione del modulo Lustre
-
Ottimizzazioni LRU (Lock Resource Unit)
-
Impostazioni di controllo della cache del client
-
Controlli RPC per OST e MDC
Per istruzioni dettagliate sull’implementazione di queste ottimizzazioni delle prestazioni:
-
Per ottimizzare le prestazioni per i nodi standard (non EFA), consulta Ottimizza le prestazioni di Amazon FSx per Lustre sui nodi (non EFA) per uno script completo che può essere aggiunto ai dati utente del modello di avvio.
-
Per ottimizzare le prestazioni per i nodi abilitati all’EFA, consulta Ottimizza le prestazioni di Amazon FSx per Lustre sui nodi (EFA).