Archivia app ad alte prestazioni con FSx for Lustre - Amazon EKS

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) fornisce un'CSIinterfaccia che consente EKS ai cluster Amazon di gestire il ciclo di vita dei file system FSx for Lustre. Per ulteriori informazioni, consulta la guida per l'utente di for LustreFSx.

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 su. GitHub

Nota

Il driver non è supportato su Fargate.

Per descrizioni dettagliate dei parametri disponibili ed esempi completi che dimostrano le funzionalità del driver, consultate il progetto driver FSx for Lustre Container Storage Interface (CSI) suGitHub.

Prerequisiti

È necessario avere:

  • Versione 2.12.3 o successiva o versione 1.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 aws --version | cut -d / -f2 | cut -d ' ' -f1. I programmi di gestione dei pacchetti, come yum, apt-get o Homebrew per macOS, spesso sono aggiornati a versioni precedenti della AWS CLI. Per installare la versione più recente, consulta le sezioni Installazione, aggiornamento e disinstallazione della AWS CLI e Configurazione rapida con aws configure nella Guida per l'utente dell'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.189.0 o quelle successive dello strumento a riga di comando eksctl deve essere installata sul dispositivo o nella AWS CloudShell. Per l'installazione o l'aggiornamento di eksctl, consulta la sezione Installation nella documentazione di eksctl.

  • Lo strumento a riga di comando kubectl è installato sul dispositivo o AWS CloudShell. La versione può essere uguale oppure immediatamente precedente o successiva alla versione Kubernetes del cluster. Ad esempio, se la versione del cluster è 1.29, puoi usare kubectl versione 1.28, 1.29 o 1.30. Per installare o aggiornare kubectl, 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 example values, tranne quando è indicato di sostituirli. È possibile sostituire qualsiasi example value 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.

Per distribuire il driver FSx for Lustre CSI
  1. Imposta alcune variabili da utilizzare nei passaggi rimanenti. Sostituiscilo my-csi-fsx-cluster con il nome del cluster di test che desideri creare e region-code con Regione AWS quello in cui desideri creare il cluster di test.

    export cluster_name=my-csi-fsx-cluster export region_code=region-code
  2. 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
  3. Crea un account Kubernetes di servizio per il driver e collega 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_code

    Vengono 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.

  4. Implementare il driver mediante il comando seguente. Sostituisci release-X.XX 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, vedi aws-fsx-csi-driver Branches on. GitHub

    Nota

    Puoi visualizzare il contenuto applicato in 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
  5. Nota il 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.

    1. Apri la AWS CloudFormation console in https://console.aws.amazon.com/cloudformazione.

    2. Assicurati che la console sia impostata sulla stessa in Regione AWS cui hai creato il tuo IAM ruolo, quindi seleziona Stacks.

    3. Selezionare la pila denominata eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa.

    4. Selezionare la scheda Outputs (Output). Il Ruolo1 ARN è elencato nella pagina Outputs (1).

  6. 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 111122223333 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, 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::111122223333:role/AmazonEKSFSxLustreCSIDriverFullAccess --overwrite=true

    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 GitHub repository di driver FSx for Lustre Container Storage Interface (CSI) per utilizzare un volume Lustre con provisioning dinamicoFSx.

  1. Annota il gruppo di sicurezza per il cluster. È possibile visualizzarlo nella sezione Networking o utilizzando il seguente AWS Management Console comando. AWS CLI

    aws eks describe-cluster --name $cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  2. 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.

  3. 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
  4. Modifica la sezione dei parametri del file storageclass.yaml. Sostituisci ogni example value con i valori in tuo possesso.

    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 sono SCRATCH_1, SCRATCH_2, PERSISTENT_1 e PERSISTENT_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 suGitHub.

  5. 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
  6. 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
  7. (Facoltativo) Modificare il file claim.yaml. Cambia 1200Gi in uno dei valori di incremento riportati di seguito in base ai tuoi requisiti di archiviazione e al deploymentType selezionato in un passaggio precedente.

    storage: 1200Gi
    • SCRATCH_2 e PERSISTENT1.2 TiB, 2.4 TiB o incrementi di 2,4 TiB su 2,4 TiB.

    • SCRATCH_11.2 TiB, 2.4 TiB, 3.6 TiB o incrementi di 3,6 TiB su 3,6 TiB.

  8. Creare la dichiarazione di volume persistente.

    kubectl apply -f claim.yaml

    Di seguito viene riportato un output di esempio:

    persistentvolumeclaim/fsx-claim created
  9. 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ò apparire Pending per 5-10 minuti, prima di passare a Bound. Non continuare con il passo successivo fino a quando Status non è Bound. Se nel campo Status viene visualizzato Pending per più di 10 minuti, utilizza i messaggi di avviso negli Events come riferimento per risolvere eventuali problemi.

  10. 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
  11. 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
  12. 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% /
    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
  13. 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.