Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Stockez des applications hautes performances avec FSx for Lustre
Le pilote FSx for Lustre Container Storage Interface (CSI)
Cette rubrique explique comment déployer le CSI pilote FSx for Lustre sur votre EKS cluster Amazon et vérifier qu'il fonctionne. Nous vous recommandons d'utiliser la dernière version du pilote. Pour les versions disponibles, consultez la matrice de compatibilité des CSI spécifications
Note
Le pilote n'est pas pris en charge sur Fargate.
Pour une description détaillée des paramètres disponibles et des exemples complets illustrant les fonctionnalités du pilote, consultez le projet de pilote FSx pour Lustre Container Storage Interface (CSI)
Vous devez disposer de ce qui suit :
-
Version
2.12.3
ou version ultérieure1.27.160
ou version ultérieure de l'interface de ligne de AWS commande (AWS CLI) installée et configurée sur votre appareil ou AWS CloudShell. Pour vérifier votre version actuelle, utilisezaws --version | cut -d / -f2 | cut -d ' ' -f1
. Des gestionnaires de packages tels queyum
apt-get
, ou Homebrew for macOS ont souvent plusieurs versions de retard par rapport à la dernière version du AWS CLI. Pour installer la dernière version, consultez la section Installation et configuration rapide avec aws configure dans le Guide de l'utilisateur de l'interface de ligne de AWS commande. La AWS CLI version installée AWS CloudShell peut également avoir plusieurs versions de retard par rapport à la dernière version. Pour le mettre à jour, consultez la section Installation AWS CLI dans votre répertoire personnel dans le guide de AWS CloudShell l'utilisateur. -
Version
0.194.0
ou version ultérieure de l'outil de ligne deeksctl
commande installé sur votre appareil ou AWS CloudShell. Pour installer ou mettre à joureksctl
, veuillez consulter Installationdans la documentation de eksctl
. -
L'outil de ligne de
kubectl
commande est installé sur votre appareil ou AWS CloudShell. La version peut être identique ou supérieure à une version mineure antérieure ou ultérieure à Kubernetes version de votre cluster. Par exemple, si la version de votre cluster est1.29
, vous pouvez utiliser la versionkubectl
1.28
,1.29
ou1.30
. Pour installer ou mettre à niveaukubectl
, veuillez consulter Configurer kubectl et eksctl.
Les procédures suivantes vous aident à créer un cluster de test simple avec le CSI pilote FSx for Lustre afin que vous puissiez voir comment il fonctionne. Nous ne recommandons pas d'utiliser le cluster de test pour les charges de travail de production. Pour ce didacticiel, nous vous recommandons d'utiliser le example values
, sauf s'il est indiqué de les remplacer. Vous pouvez remplacer n'importe quel example value
lorsque vous terminez les étapes relatives à votre cluster de production. Nous vous recommandons d'effectuer toutes les étapes dans le même terminal car les variables sont définies et utilisées tout au long des étapes et n'existeront pas dans différents terminaux.
-
Définissez quelques variables à utiliser lors des étapes restantes. Remplacez
my-csi-fsx-cluster
avec le nom du cluster de test que vous souhaitez créer etregion-code
avec la AWS région dans laquelle vous souhaitez créer votre cluster de test.export cluster_name=my-csi-fsx-cluster export region_code=region-code
-
Créez un cluster de test.
eksctl create cluster \ --name $cluster_name \ --region $region_code \ --with-oidc \ --ssh-access \ --ssh-public-key my-key
L'approvisionnement de cluster dure plusieurs minutes. Lors de la création du cluster, vous verrez plusieurs lignes de sortie. La dernière ligne de sortie est similaire à celle de l'exemple suivant.
[✓] EKS cluster "my-csi-fsx-cluster" in "region-code" region is ready
-
Créez un Kubernetes compte de service pour le pilote et attachez la politique
AmazonFSxFullAccess
AWS-managed au compte de service à l'aide de la commande suivante. Si votre cluster se trouve dans les AWS régions AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest), remplacez-le pararn: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
Vous verrez plusieurs lignes de sortie lors de la création du compte de service. Les dernières lignes de sortie sont similaires à celle de l'exemple suivant.
[ℹ] 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"
Notez le nom de la AWS CloudFormation pile qui a été déployée. Dans l'exemple de sortie ci-dessus, la pile est nommée
eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
. -
Installez le pilote avec la commande suivante : Remplacez
release-X.XX
avec la succursale de votre choix. La branche master n'est pas prise en charge car elle peut contenir des fonctionnalités à venir incompatibles avec la version stable du pilote actuellement publiée. Nous vous recommandons d'utiliser la dernière version publiée. Pour une liste des branches, voiraws-fsx-csi-driver
Branchesactives GitHub. Note
Vous pouvez consulter le contenu appliqué dans aws-fsx-csi-driver/deploy/kubernetes/overlays/stable
sur GitHub. kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-X.XX"
L'exemple qui suit illustre un résultat.
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
-
Notez ARN le rôle qui a été créé. Si vous ne l'avez pas noté plus tôt et qu'il n'est plus disponible dans la AWS CLI sortie, vous pouvez procéder comme suit pour le voir dans le AWS Management Console.
-
Ouvrez la AWS CloudFormation console
. -
Assurez-vous que la console est configurée sur la AWS région dans laquelle vous avez créé votre IAM rôle, puis sélectionnez Stacks.
-
Sélectionnez la pile nommée
eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
. -
Sélectionnez l'onglet Outputs (Sorties). Le rôle1 ARN est répertorié sur la page Sorties (1).
-
-
Appliquez un correctif sur le déploiement du pilote pour ajouter le compte de service que vous avez créé précédemment avec la commande suivante. Remplacez le ARN par celui ARN que vous avez noté. Remplacez
111122223333
avec votre identifiant de compte. Si votre cluster se trouve dans les AWS régions AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest), remplacez-le pararn:aws:
.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
L'exemple qui suit illustre un résultat.
serviceaccount/fsx-csi-controller-sa annotated
Cette procédure utilise le pilote FSx for Lustre Container Storage Interface (CSI)
-
Notez le groupe de sécurité de votre cluster. Vous pouvez le voir AWS Management Console sous la section Réseau ou en utilisant la AWS CLI commande suivante.
aws eks describe-cluster --name $cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId
-
Créez un groupe de sécurité pour votre système de FSx fichiers Amazon conformément aux critères indiqués dans la section Groupes VPC de sécurité Amazon du guide de l'utilisateur Amazon FSx for Lustre. Pour le VPC, sélectionnez celui VPC de votre cluster comme indiqué dans la section Mise en réseau. Pour « les groupes de sécurité associés à vos clients Lustre », utilisez le groupe de sécurité de votre cluster. Vous pouvez juste laisser les règles sortantes pour autoriser Tout le trafic.
-
Téléchargez le manifeste de la classe de stockage à l'aide de la commande suivante.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml
-
Modifiez la section des paramètres du fichier
storageclass.yaml
. Remplacez tousexample value
avec vos propres valeurs.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 de sous-réseau dans lequel le système de fichiers Amazon FSx for Lustre doit être créé. Amazon FSx for Lustre n'est pas pris en charge dans toutes les zones de disponibilité. Ouvrez la console Amazon FSx for Lustre https://console.aws.amazon.com/fsx/à l'adresse pour vérifier que le sous-réseau que vous souhaitez utiliser se trouve dans une zone de disponibilité prise en charge. Le sous-réseau peut inclure vos nœuds, être un sous-réseau différent ou : VPC -
Vous pouvez vérifier la présence des sous-réseaux de nœuds dans le en AWS Management Console sélectionnant le groupe de nœuds dans la section Calculer.
-
Si le sous-réseau que vous spécifiez n'est pas le même que celui dans lequel vous avez des nœuds, vous VPCs devez être connecté et vous assurer que les ports nécessaires sont ouverts dans vos groupes de sécurité.
-
-
securityGroupIds
— L'ID du groupe de sécurité que vous avez créé pour le système de fichiers. -
deploymentType
(facultatif) — Type de déploiement du système de fichiers. Les valeurs valides sontSCRATCH_1
,SCRATCH_2
,PERSISTENT_1
etPERSISTENT_2
. Pour plus d'informations sur les types de déploiement, consultez Créer votre système de fichiers Amazon FSx for Lustre. -
autres paramètres (facultatif) — Pour plus d'informations sur les autres paramètres, voir Modifier StorageClass
sur GitHub.
-
-
Créez le manifeste de la classe de stockage.
kubectl apply -f storageclass.yaml
L'exemple qui suit illustre un résultat.
storageclass.storage.k8s.io/fsx-sc created
-
Téléchargez le manifeste de revendication de volume persistant.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/claim.yaml
-
(Facultatif) Modifiez le fichier
claim.yaml
. Modification1200Gi
à l'une des valeurs d'incrémentation suivantes, en fonction de vos besoins en stockage et de celledeploymentType
que vous avez sélectionnée à l'étape précédente.storage: 1200Gi
-
SCRATCH_2
etPERSISTENT
–1.2 TiB
,2.4 TiB
ou des incréments de 2,4 Tio au-dessus de 2,4 Tio. -
SCRATCH_1
–1.2 TiB
,2.4 TiB
,3.6 TiB
ou des incréments de 3,6 Tio au-dessus de 3,6 Tio.
-
-
Créez la revendication de volume persistant.
kubectl apply -f claim.yaml
L'exemple qui suit illustre un résultat.
persistentvolumeclaim/fsx-claim created
-
Vérifiez que le système de fichiers est approvisionné.
kubectl describe pvc
L'exemple qui suit illustre un résultat.
Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]
Note
Le
Status
peut indiquerPending
pendant 5-10 minutes avant de devenirBound
. Ne passez pas à l'étape suivante tant queStatus
c'est le casBound
. Si leStatus
affichePending
pendant plus de 10 minutes, utilisez des messages d'avertissement dans lesEvents
comme référence afin de résoudre tout problème. -
Déployez un exemple d'application
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/pod.yaml
-
Vérifiez que l'exemple d'application est en cours d'exécution.
kubectl get pods
L'exemple qui suit illustre un résultat.
NAME READY STATUS RESTARTS AGE fsx-app 1/1 Running 0 8s
-
Vérifiez que le système de fichiers est correctement monté par l'application.
kubectl exec -ti fsx-app -- df -h
L'exemple qui suit illustre un résultat.
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
-
Vérifiez que les données ont été écrites dans le système de fichiers FSx for Lustre par l'exemple d'application.
kubectl exec -it fsx-app -- ls /data
L'exemple qui suit illustre un résultat.
out.txt
Cet exemple de sortie signifie que l'exemple d'application a réussi à écrire le fichier
out.txt
dans le système de fichiers.
Note
Avant de supprimer le cluster, assurez-vous de supprimer le système de fichiers FSx for Lustre. Pour plus d'informations, consultez les ressources de nettoyage dans le guide de l'utilisateur de FSx for Lustre.