Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Archivia app ad alte prestazioni con FSx for Lustre
Il driver FSx for Lustre Container Storage Interface (CSI)
Questo argomento mostra come distribuire il CSI driver FSx for Lustre nel tuo EKS cluster Amazon e verificarne il funzionamento. Ti consigliamo di utilizzare sempre la versione più recente del driver. Per le versioni disponibili, consulta CSISpecification Compatibility Matrix
Nota
Il driver non è supportato su Fargate.
Per descrizioni dettagliate dei parametri disponibili ed esempi completi che dimostrano le caratteristiche del driver, vedete il progetto driver FSx for Lustre Container Storage Interface (CSI)
Prerequisiti
È necessario avere:
-
Versione
2.12.3
o successiva o versione1.27.160
o successiva di AWS Command Line Interface (AWS CLI) installato e configurato sul dispositivo o AWS CloudShell. Per verificare la versione attuale, usa
. Package manager comeaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
apt-get
, o Homebrew for macOS sono spesso presenti diverse versioni precedenti alla versione più recente di AWS CLI. Per installare la versione più recente, vedere Installazione, aggiornamento e disinstallazione di AWS CLI e Configurazione rapida con aws configure nella Guida per l'utente di AWS Command Line Interface . La AWS CLI versione installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarla, consulta Installazione nella home directory nella Guida AWS CLI per l'AWS CloudShell utente. -
La versione
0.191.0
o quelle successive dello strumento a riga di comandoeksctl
deve essere installata sul dispositivo o nella 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 AWS CloudShell. La versione può essere uguale o superiore a una versione secondaria precedente o successiva alla Kubernetes versione del cluster. Ad esempio, se la versione del cluster è1.30
, puoi usarekubectl
versione1.29
,1.30
o1.31
. Per installare o aggiornarekubectl
, consulta Configurazione kubectl e eksctl:
Le seguenti procedure consentono di creare un semplice cluster di test con il CSI driver FSx for Lustre in modo da poterne vedere il funzionamento. Ti consigliamo di non utilizzare il cluster di test per i carichi di lavoro di produzione. Per questo tutorial ti consigliamo di utilizzare i
, tranne quando è indicato di sostituirli. È possibile sostituire qualsiasi example
values
quando si completano i passaggi per il cluster di produzione. Ti consigliamo di completare tutti i passaggi nello stesso terminale, dato che le variabili impostate e utilizzate durante la procedura non sono presenti in terminali diversi.example value
Per distribuire il driver FSx for Lustre CSI
-
Imposta alcune variabili da utilizzare nei passaggi rimanenti. Sostituiscilo
con il nome del cluster di test che desideri creare emy-csi-fsx-cluster
con Regione AWS quello in cui desideri creare il cluster di test.region-code
export cluster_name=
my-csi-fsx-cluster
export region_code=region-code
-
Crea un cluster di test.
eksctl create cluster \ --name $cluster_name \ --region $region_code \ --with-oidc \ --ssh-access \ --ssh-public-key
my-key
Il provisioning del cluster richiede diversi minuti. Durante la creazione del cluster, vengono generate diverse righe di output. L'ultima riga di output è simile alla seguente riga di esempio.
[✓] EKS cluster "
my-csi-fsx-cluster
" in "region-code
" region is ready -
Crea un Kubernetes account di servizio per il driver e allega la policy
AmazonFSxFullAccess
AWS-managed all'account di servizio con il seguente comando. Se il tuo cluster si trova negli AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali) Regioni AWS, sostituiscilo con.arn:aws:
arn:aws-us-gov:
eksctl create iamserviceaccount \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonFSxFullAccess \ --approve \ --role-name
AmazonEKSFSxLustreCSIDriverFullAccess
\ --region $region_codeVengono visualizzate 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-csi-fsx-cluster
-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
" [ℹ] deploying stack "eksctl-my-csi-fsx-cluster
-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
" [ℹ] waiting for CloudFormation stack "eksctl-my-csi-fsx-cluster
-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
" [ℹ] created serviceaccount "kube-system/fsx-csi-controller-sa
"Annota il nome dello AWS CloudFormation stack che è stato distribuito. Nell'output di esempio precedente, lo stack è denominato
eksctl-
.my-csi-fsx-cluster
-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
-
Implementare il driver mediante il comando seguente. Sostituisci
con il ramo desiderato. Il ramo master non è supportato perché potrebbe contenere funzionalità prossime al rilascio che sono incompatibili con la versione stabile del driver attualmente rilasciata. Si consiglia di utilizzare l'ultima versione. Per un elenco delle filiali, vedirelease-X.XX
aws-fsx-csi-driver
Brancheson. GitHub Nota
È possibile visualizzare il contenuto applicato
aws-fsx-csi-driver/deploy/kubernetes/overlays/stable
su GitHub. kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=
release-X.XX
"Di seguito viene riportato un output di esempio:
serviceaccount/
fsx-csi-controller-sa
created serviceaccount/fsx-csi-node-sa created clusterrole.rbac.authorization.k8s.io/fsx-csi-external-provisioner-role created clusterrole.rbac.authorization.k8s.io/fsx-external-resizer-role created clusterrolebinding.rbac.authorization.k8s.io/fsx-csi-external-provisioner-binding created clusterrolebinding.rbac.authorization.k8s.io/fsx-csi-resizer-binding created deployment.apps/fsx-csi-controller created daemonset.apps/fsx-csi-node created csidriver.storage.k8s.io/fsx.csi.aws.com created -
Nota quanto segue ARN per il ruolo che è stato creato. Se non l'hai notato in precedenza e non lo hai più disponibile nell' AWS CLI output, puoi fare quanto segue per vederlo nel AWS Management Console.
Apri la AWS CloudFormation console in https://console.aws.amazon.com/cloudformazione.
-
Assicurati che la console sia impostata sulla stessa in Regione AWS cui hai creato il tuo IAM ruolo, quindi seleziona Stacks.
-
Selezionare la pila denominata
eksctl-
.my-csi-fsx-cluster
-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
-
Selezionare la scheda Outputs (Output). Il Ruolo1 ARN è elencato nella pagina Outputs (1).
-
Applica una patch alla implementazione del driver per aggiungere l'account di servizio creato precedentemente con il seguente comando. Sostituisci il ARN con ARN quello che hai annotato. Sostituisci
con l'ID del tuo account. Se il cluster si trova negli AWS GovCloud Stati Uniti orientali o AWS GovCloud negli Stati Uniti occidentali Regioni AWS,111122223333
arn:aws:
sostituiscilo con.arn:aws-us-gov:
kubectl annotate serviceaccount -n kube-system
fsx-csi-controller-sa
\ eks.amazonaws.com/role-arn=arn:aws:iam::
--overwrite=true111122223333
:role/AmazonEKSFSxLustreCSIDriverFullAccess
Di seguito viene riportato un output di esempio:
serviceaccount/
fsx-csi-controller-sa
annotated
Per distribuire una classe di archiviazione, una dichiarazione di volume persistente e un'app di esempio
Questa procedura utilizza il driver FSxfor Lustre Container Storage Interface () CSI
-
Annota il gruppo di sicurezza per il cluster. Puoi vederlo nella sezione Networking o AWS Management Console usando il seguente comando. AWS CLI
aws eks describe-cluster --name $cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId
-
Crea un gruppo di sicurezza per il tuo FSx file system Amazon in base ai criteri indicati in Amazon VPC Security Groups nella Amazon FSx for Lustre User Guide. Per la VPC, seleziona il VPC cluster come mostrato nella sezione Rete. 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
. Sostituisci ognistorageclass.yaml
con i valori in tuo possesso.example value
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 di sottorete in cui deve essere creato il file system Amazon FSx for Lustre. Amazon FSx for Lustre non è supportato in tutte le zone di disponibilità. Apri la console Amazon FSx for Lustre all'indirizzo per https://console.aws.amazon.com/fsx/confermare che la sottorete che desideri utilizzare si trova in una zona di disponibilità supportata. La sottorete può includere i tuoi nodi o può essere una sottorete diversa oppure: VPC -
È possibile verificare la presenza di sottoreti di nodi in AWS Management Console selezionando il gruppo di nodi nella sezione Elaborazione.
-
Se la sottorete specificata non è la stessa sottorete in cui sono presenti i nodi, è VPCs necessario essere connessi e assicurarsi di avere le porte necessarie 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_1
ePERSISTENT_2
. Per ulteriori informazioni sui tipi di distribuzione, consulta Create your Amazon FSx for Lustre file system. -
altri parametri (facoltativo): per informazioni sugli altri parametri, consulta Modifica StorageClass
su GitHub.
-
-
Crea il manifesto della classe di storage.
kubectl apply -f storageclass.yaml
Di 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
. Cambiaclaim.yaml
in uno dei valori di incremento riportati di seguito in base ai tuoi requisiti di archiviazione e al1200Gi
deploymentType
selezionato in un passaggio precedente.storage:
1200Gi
-
SCRATCH_2
ePERSISTENT
–1.2 TiB
,2.4 TiB
o incrementi di 2,4 TiB su 2,4 TiB. -
SCRATCH_1
–1.2 TiB
,2.4 TiB
,3.6 TiB
o incrementi di 3,6 TiB su 3,6 TiB.
-
-
Creare la dichiarazione di volume persistente.
kubectl apply -f claim.yaml
Di seguito viene riportato un output di esempio:
persistentvolumeclaim/fsx-claim created
-
Verificare che il file system sia stato sottoposto a provisioning.
kubectl describe pvc
Di seguito viene riportato un output di esempio:
Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]
Nota
Status
può apparirePending
per 5-10 minuti, prima di passare aBound
. Non continuare con il passo successivo fino a quandoStatus
non èBound
. Se nel campoStatus
viene visualizzatoPending
per più di 10 minuti, utilizza i messaggi di avviso negliEvents
come 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 pods
Di 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 -h
Di seguito viene riportato un output di esempio:
Filesystem Size Used Avail Use% Mounted on overlay
80G
4.0G
77G
5%
/ tmpfs64M
0
64M
0%
/dev tmpfs3.8G
0
3.8G
0%
/sys/fs/cgroup192.0.2.0
@tcp:/abcdef01
1.1T
7.8M
1.1T
1%
/data /dev/nvme0n1p180G
4.0G
77G
5%
/etc/hosts shm64M
0
64M
0%
/dev/shm tmpfs6.9G
12K
6.9G
1%
/run/secrets/kubernetes.io/serviceaccount tmpfs3.8G
0
3.8G
0%
/proc/acpi tmpfs3.8G
0
3.8G
0%
/sys/firmware -
Verifica che i dati siano stati scritti nel file system FSx for Lustre dall'app di esempio.
kubectl exec -it fsx-app -- ls /data
Di seguito viene riportato un output di esempio:
out.txt
Questo output esemplificativo mostra che l'app di esempio ha eseguito correttamente la scrittura del file
out.txt
nel file system.
Nota
Prima di eliminare il cluster, assicuratevi di eliminare il file system FSx for Lustre. Per ulteriori informazioni, consultate Clean up resources nella Guida FSx per l'utente di for Lustre.