Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Comment utiliser le stockage persistant dans Amazon EKS ?
Je souhaite utiliser le stockage persistant dans Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
Pour utiliser le stockage permanent dans Amazon EKS, suivez les étapes correspondant à l'une des méthodes suivantes :
- Déployez et testez le pilote d’interface de stockage de conteneur (CSI) Amazon Elastic Block Store (Amazon EBS).
- Déployez et testez le pilote CSI Amazon Elastic File System (Amazon EFS).
Remarque : Pour des raisons de sécurité et d'efficacité, il est recommandé d'installer le pilote CSI via un module complémentaire Amazon EKS. Il est également recommandé d'installer la version la plus récente des pilotes. Pour les étapes d'installation et la dernière version du pilote, consultez la page aws-ebs-csi-driver ou aws-efs-csi-driver sur le site Web de GitHub.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Prérequis :
-
Configurez une version de kubectl qui correspond à votre version de Kubernetes. Pour plus d'informations sur les exigences en matière d’asymétrie de version, consultez la page kubectl sur le site Web de Kubernetes.
-
Installez ou mettez à jour eksctl. Pour obtenir des instructions, consultez la page Installation sur le site Web d'eksctl.
-
Configurez les autorisations Créer de Gestion des identités et des accès AWS (AWS IAM). Puis, associez la politique au rôle de pilote CSI ou au rôle de composant master Amazon EKS.
-
Créez votre cluster Amazon EKS, puis joignez-y vos composants master. Pour vérifier que vous avez associé vos composants master à votre cluster, exécutez la commande suivante :
kubectl get nodes -
Pour vérifier qu'un fournisseur IAM OpenID Connect (OIDC) existe pour votre cluster, exécutez la commande describe-cluster de l’AWS CLI suivante :
aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output textRemarque : Remplacez your_cluster_name par le nom de votre cluster.
-
Pour vérifier que vous avez configuré votre fournisseur OIDC IAM, exécutez la commande list-open-id-connect-providers suivante :
aws iam list-open-id-connect-providers | grep OIDC-IDRemarque : Remplacez OIDC-ID par l'ID de votre fournisseur OIDC. Si vous recevez un message d’erreur , créez un fournisseur OIDC IAM"No OpenIDConnect provider found in your account".
Pilote CSI Amazon EBS
Pour déployer le pilote Amazon EBS CSI, procédez comme suit :
-
Créez un fichier de politique d’approbation IAM selon l’exemple suivant :
cat <<EOF > trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID:aud": "sts.amazonaws.com", "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } EOFRemarque : Remplacez YOUR_AWS_ACCOUNT_ID par l’ID de votre compte AWS, YOUR_AWS_REGION par votre région AWS et OIDC-ID par l’ID de votre fournisseur OIDC.
-
Pour créer un rôle IAM nommé AmazonEKS_EBS_CSI_DriverRole, exécutez la commande create-role suivante :
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json" -
Pour associer la politique IAM gérée par AWS du pilote CSI au rôle IAM, exécutez la commande attach-role-policy suivante :
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy --role-name AmazonEKS_EBS_CSI_DriverRole -
Pour déployer le pilote CSI Amazon EBS, utilisez Kustomize, Helm ou un module complémentaire géré par Amazon EKS. Pour les instructions de déploiement, consultez la page Installation sur le site Web de GitHub.
-
Testez votre pilote Amazon EBS CSI à l'aide d'un exemple d'application qui utilise le provisionnement dynamique pour les pods. Le pilote CSI Amazon EBS provisionne les volumes EBS à la demande.
Pilote CSI Amazon EFS
Créer un rôle IAM pour le pilote CSI
Procédez comme suit pour un cluster contenant des composants master :
-
Pour utiliser AmazonEFSCSIDriverPolicy, consultez la section En cas d’utilisation de rôles IAM pour les comptes de service. Puis, passez à l'étape 7.
Vous pouvez également exécuter la commande suivante pour télécharger le document de politique IAM depuis GitHub :curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/docs/iam-policy-example.json -
Pour créer une politique IAM, exécutez la commande create-policy suivante :
aws iam create-policy --policy-name AmazonEKS_EFS_CSI_Driver_Policy --policy-document file://iam-policy-example.json -
Pour déterminer l'ID du fournisseur OIDC de votre cluster, exécutez la commande describe-cluster suivante :
aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output textRemarque : Remplacez your_cluster_name par le nom de votre cluster.
-
Créez la politique d’approbation IAM suivante, puis accordez l’action AssumeRoleWithWebIdentity à votre compte de service Kubernetes :
cat <<EOF > trust-policy.json{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa" } } } ] } EOFRemarque : Remplacez YOUR_AWS_ACCOUNT_ID par votre ID de compte, YOUR_AWS_REGION par votre région et OIDC-ID par l'ID du fournisseur OIDC de votre cluster.
-
Pour créer un rôle IAM, exécutez la commande create-role suivante :
aws iam create-role --role-name AmazonEKS_EFS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json" -
Pour associer votre nouvelle politique IAM au rôle, exécutez la commande attach-role-policy suivante :
aws iam attach-role-policy --policy-arn arn:aws:iam::AWS_ACCOUNT_ID:policy/AmazonEKS_EFS_CSI_Driver_Policy --role-name AmazonEKS_EFS_CSI_DriverRoleRemarque : Remplacez YOUR_AWS_ACCOUNT_ID par l’ID de votre compte AWS.
-
Si vous utilisez un module complémentaire géré, passez à la section Déployer le pilote CSI Amazon EFS. Pour installer un pilote autogéré, suivez les étapes 7 à 10. Enregistrez le contenu suivant dans un fichier YAML nommé efs-service-account.yaml :
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver name: efs-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::AWS_ACCOUNT_ID:role/AmazonEKS_EFS_CSI_DriverRoleRemarque : Remplacez YOUR_AWS_ACCOUNT_ID par l’ID de votre compte AWS.
-
Pour créer le compte de service Kubernetes sur votre cluster, exécutez la commande suivante :
kubectl apply -f efs-service-account.yamlRemarque : Le compte de service Kubernetes efs-csi-controller-sa contient l'annotation du rôle IAM que vous avez créé.
-
Pour télécharger le manifeste depuis le registre Amazon Elastic Container Registry (Amazon ECR) public, exécutez la commande suivante :
kubectl kustomize "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-VERSION" > public-ecr-driver.yamlRemarque : Remplacez VERSION par le numéro de version de votre mise à jour. Il est recommandé d'utiliser la dernière version publiée. Pour obtenir une liste des branches actives, consultez la page Branches sur le site Web de GitHub. Vous pouvez utiliser Helm au lieu de Kustomize pour installer le pilote. Pour connaître les étapes à suivre, consultez la page Déployer le pilote sur le site Web de GitHub.
-
Modifiez le fichier téléchargé pour supprimer les lignes suivantes :
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver name: efs-csi-controller-sa namespace: kube-system
Remarque : Il n'est pas nécessaire d'inclure les lignes précédentes car vous avez déjà créé un compte de service à l'étape 7.
Déployer le pilote CSI Amazon EFS
Pour appliquer le manifeste, exécutez la commande suivante :
kubectl apply -f public-ecr-driver.yaml
Si votre cluster ne contient pas de nœuds et contient uniquement des pods AWS Fargate, exécutez la commande suivante pour déployer le pilote dans toutes les régions :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/deploy/kubernetes/base/csidriver.yaml
Créer un système de fichiers EFS
Procédez comme suit :
- Pour obtenir l'ID du cloud privé virtuel (VPC) de votre cluster Amazon EKS, exécutez la commande describe-cluster suivante :
Remarque : Remplacez your_cluster_name par le nom de votre cluster.aws eks describe-cluster --name your_cluster_name --query "cluster.resourcesVpcConfig.vpcId" --output text - Pour obtenir la plage CIDR de votre cluster de VPC, exécutez la commande describe-vpcs suivante :
Remarque : Remplacez la valeur de YOUR_VPC_ID par l’ID de votre VPC.aws ec2 describe-vpcs --vpc-ids YOUR_VPC_ID --query "Vpcs[].CidrBlock" --output text - Pour créer un groupe de sécurité qui autorise le trafic entrant du système de fichiers réseau (NFS) vers vos points de montage Amazon EFS, exécutez la commande create-security-group suivante :
Remarque : Remplacez YOUR_VPC_ID par l’ID de votre VPC. Dans la sortie, notez la valeur de GroupId.aws ec2 create-security-group --description efs-test-sg --group-name efs-sg --vpc-id YOUR_VPC_ID - Pour autoriser les ressources de votre VPC à communiquer avec votre système de fichiers EFS, exécutez la commande authorize-security-group-ingress suivante pour ajouter une règle entrante NFS :
Remarque : Remplacez YOUR_VPC_CIDR par le CIDR de votre VPC et sg-xxx par l'ID de votre groupe de sécurité.aws ec2 authorize-security-group-ingress --group-id sg-abc --protocol tcp --port 2049 --cidr YOUR_VPC_CIDR - Pour créer un système de fichiers EFS pour votre cluster Amazon EKS, exécutez la commande create-file-system suivante :
Remarque : Notez le paramètre FileSystemId.aws efs create-file-system --creation-token eks-efs - Pour créer une cible de montage pour Amazon EFS, exécutez la commande create-mount-target suivante :
Remarque : Remplacez FileSystemId par l'ID de votre système de fichiers EFS, sg-abc par l'ID de votre groupe de sécurité et SubnetID par l'ID du sous-réseau de votre composant master. Il est recommandé d'exécuter la commande précédente pour chaque zone de disponibilité dans laquelle s'exécutent vos composants master. Toutes les instances Amazon Elastic Compute Cloud (Amazon EC2) appartenant à ces zones de disponibilité peuvent utiliser le système de fichiers. Pour créer des cibles de montage dans plusieurs sous-réseaux, vous devez exécuter la commande pour chaque ID de sous-réseau.aws efs create-mount-target --file-system-id FileSystemId --subnet-id SubnetID --security-group sg-abc
Tester le pilote CSI Amazon EFS
Pour déployer deux pods qui écrivent dans le même fichier, consultez la page Multiple Pods Read Write Many sur le site Web de GitHub.
Informations connexes
Résolution des erreurs de fonctionnement des fichiers liées aux quotas
Pilote CSI Amazon EFS sur le site Web de GitHub
Comment résoudre les problèmes liés aux montages de mes volumes Amazon EFS dans Amazon EKS ?
Comment résoudre les problèmes liés aux montages de mes volumes Amazon EFS dans Amazon EKS ?
- Sujets
- Containers
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a un an
- demandé il y a un an
- Réponse acceptéedemandé il y a un an
- demandé il y a 5 mois