Le pilote Amazon Elastic File System Container Storage Interface (CSI) implémente la spécification CSI pour les orchestrateurs de conteneurs afin de gérer le cycle de vie des systèmes de fichiers Amazon EFS.
Pilote Amazon EFS CSI Version des spécifications CSI | v0.3.0 | v1.1.0 | v1.2.0 |
---|---|---|---|
branche principale | Non | Non | Oui |
v2.xx | Non | Non | Oui |
v1.xx | Non | Non | Oui |
v0.3.0 | Non | Oui | Non |
v0.2.0 | Non | Oui | Non |
v0.1.0 | Oui | Non | Non |
Le pilote Amazon EFS CSI prend en charge le provisionnement dynamique et le provisionnement statique. Actuellement, Dynamic Provisioning crée un point d’accès pour chaque PV. Cela signifie qu'un système de fichiers Amazon EFS doit d'abord être créé manuellement sur AWS et doit être fourni en entrée du paramètre de classe de stockage. Pour le provisionnement statique, le système de fichiers Amazon EFS doit d'abord être créé manuellement sur AWS. Après cela, il peut être monté dans un conteneur en tant que volume à l'aide du pilote.
Les interfaces CSI suivantes sont implémentées :
Paramètres | Valeurs | Défaut | Facultatif | Description |
---|---|---|---|---|
mode de provisionnement | efs-ap | FAUX | Type de volume provisionné par efs. Actuellement, les points d'accès sont pris en charge. | |
IDSystème de fichiers | FAUX | Système de fichiers sous lequel les points d'accès sont créés. | ||
répertoirePerms | FAUX | Autorisations de répertoire pour la création du répertoire racine du point d'accès. | ||
uide | vrai | ID utilisateur POSIX à appliquer pour la création du répertoire racine du point d’accès. | ||
bonjour | vrai | ID de groupe POSIX à appliquer pour la création du répertoire racine du point d’accès. | ||
gidRangeStart | 50000 | vrai | Plage de début de l’ID de groupe POSIX à appliquer pour la création du répertoire racine du point d’accès. Non utilisé si uid/gid est défini. | |
gidRangeEnd | 7000000 | vrai | Plage de fin de l’ID du groupe POSIX. Non utilisé si uid/gid est défini. | |
chemin de base | vrai | Chemin sous lequel les points d’accès pour le provisionnement dynamique sont créés. Si ce paramètre n'est pas spécifié, les points d'accès sont créés sous le répertoire racine du système de fichiers | ||
modèle de sous-chemin | /${.PV.name} | vrai | Modèle utilisé pour construire le sous-chemin sous lequel chacun des points d'accès créés sous Dynamic Provisioning. Peut être composé de chaînes fixes et de variables limitées, s'apparente à la variable « subPathPattern » sur le graphique nfs-subdir-external-provisioner. Prend en charge .PVC.name , .PVC.namespace et .PV.name | |
assurerUniqueDirectory | vrai | vrai | REMARQUE : ne définissez cette valeur sur false que si vous êtes sûr que c'est le comportement souhaité . Utilisé lorsque le provisionnement dynamique est activé, s'il est défini sur true, ajoute un UID au modèle spécifié dans subPathPattern pour garantir que les points d'accès ne pointeront pas accidentellement vers le même répertoire. | |
az | "" | vrai | Utilisé pour le montage entre comptes. az sous le paramètre de classe de stockage est facultatif. Si elle est spécifiée, la cible de montage associée à az sera utilisée pour le montage entre comptes. Si elle n'est pas spécifiée, une cible de montage aléatoire sera choisie pour le montage entre comptes. | |
réutiliserAccessPoint | FAUX | vrai | Lorsqu'il est défini sur true, il crée le jeton client du point d'accès à partir du nom PVC fourni. Afin que l'AccessPoint puisse être répliqué à partir d'un cluster différent si le même nom PVC et la même configuration de classe de stockage sont utilisés. |
Note
gidRangeStart
et gidRangeEnd
. Ces paramètres sont facultatifs uniquement si les deux sont omis. Si vous en précisez un, l’autre devient obligatoire.az
sous le paramètre de classe de stockage ne doit pas être confondu avec l'option de montage efs-utils az
. L'option de montage az
est utilisée pour le montage cross-az ou le montage du système de fichiers efs à une zone dans le même compte aws que le cluster.Si vous souhaitez transmettre d'autres options de montage au pilote Amazon EFS CSI lors du montage, elles peuvent être transmises via les objets Volume persistant ou Classe de stockage, selon que l'approvisionnement statique ou dynamique est utilisé. Voici des exemples de certaines options de montage qui peuvent être transmises :
Lorsque vous utilisez le pilote EFS CSI, sachez que l'option de montage noresvport
est activée par défaut. Cela signifie que le client peut utiliser n'importe quel port source disponible pour la communication, pas seulement les ports réservés.
L'un des avantages de l'utilisation d'Amazon EFS est qu'il fournit une prise en charge du chiffrement en transit à l'aide de TLS. Grâce au chiffrement en transit, les données seront chiffrées lors de leur transition sur le réseau vers le service Amazon EFS. Cela fournit une couche supplémentaire de défense en profondeur pour les applications qui nécessitent une conformité stricte en matière de sécurité.
Le chiffrement en transit est activé par défaut dans la version de branche principale du pilote. Pour le désactiver et monter des volumes à l'aide de NFSv4 simple, définissez le champ volumeAttributes
encryptInTransit
sur "false"
dans votre manifeste de volume persistant. Pour un exemple de manifeste, consultez l’exemple de chiffrement en transit.
Note
Kubernetes version 1.13 ou ultérieure est requise si vous utilisez cette fonctionnalité dans Kubernetes.
Les sections suivantes sont spécifiques à Kubernetes. Si vous êtes un utilisateur Kubernetes, utilisez-le pour les fonctionnalités du pilote, les étapes d'installation et les exemples.
Pilote Amazon EFS CSI Version Kubernetes | maturité | v1.11 | v1.12 | v1.13 | v1.14 | v1.15 | v1.16 | v1.17+ |
---|---|---|---|---|---|---|---|---|
branche principale | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v2.1.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v2.0.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.7.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.6.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.5.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.4.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.3.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.2.x | Géorgie | Non | Non | Non | Non | Non | Non | Oui |
v1.1.x | Géorgie | Non | Non | Non | Oui | Oui | Oui | Oui |
v1.0.x | Géorgie | Non | Non | Non | Oui | Oui | Oui | Oui |
v0.3.0 | bêta | Non | Non | Non | Oui | Oui | Oui | Oui |
v0.2.0 | bêta | Non | Non | Non | Oui | Oui | Oui | Oui |
v0.1.0 | alpha | Oui | Oui | Oui | Non | Non | Non | Non |
Version du pilote Amazon EFS CSI | Image |
---|---|
branche principale | amazon/aws-efs-csi-driver:maître |
v2.1.0 | amazon/aws-efs-csi-driver : v2.1.0 |
v2.0.9 | amazon/aws-efs-csi-driver : v2.0.9 |
v2.0.8 | amazon/aws-efs-csi-driver : v2.0.8 |
v2.0.7 | amazon/aws-efs-csi-driver : v2.0.7 |
v2.0.6 | amazon/aws-efs-csi-driver : v2.0.6 |
v2.0.5 | amazon/aws-efs-csi-driver : v2.0.5 |
v2.0.4 | amazon/aws-efs-csi-driver : v2.0.4 |
v2.0.3 | amazon/aws-efs-csi-driver : v2.0.3 |
v2.0.2 | amazon/aws-efs-csi-driver : v2.0.2 |
v2.0.1 | amazon/aws-efs-csi-driver : v2.0.1 |
v2.0.0 | amazon/aws-efs-csi-driver : v2.0.0 |
v1.7.7 | amazon/aws-efs-csi-driver : v1.7.7 |
v1.7.6 | amazon/aws-efs-csi-driver : v1.7.6 |
v1.7.5 | amazon/aws-efs-csi-driver : v1.7.5 |
v1.7.4 | amazon/aws-efs-csi-driver : v1.7.4 |
v1.7.3 | amazon/aws-efs-csi-driver : v1.7.3 |
v1.7.2 | amazon/aws-efs-csi-driver : v1.7.2 |
v1.7.1 | amazon/aws-efs-csi-driver : v1.7.1 |
v1.7.0 | amazon/aws-efs-csi-driver : v1.7.0 |
v1.6.0 | amazon/aws-efs-csi-driver : v1.6.0 |
v1.5.9 | amazon/aws-efs-csi-driver : v1.5.9 |
v1.5.8 | amazon/aws-efs-csi-driver : v1.5.8 |
v1.5.7 | amazon/aws-efs-csi-driver : v1.5.7 |
v1.5.6 | amazon/aws-efs-csi-driver : v1.5.6 |
v1.5.5 | amazon/aws-efs-csi-driver : v1.5.5 |
v1.5.4 | amazon/aws-efs-csi-driver : v1.5.4 |
v1.5.3 | amazon/aws-efs-csi-driver : v1.5.3 |
v1.5.2 | amazon/aws-efs-csi-driver : v1.5.2 |
v1.5.1 | amazon/aws-efs-csi-driver : v1.5.1 |
v1.5.0 | amazon/aws-efs-csi-driver : v1.5.0 |
v1.4.9 | amazon/aws-efs-csi-driver : v1.4.9 |
v1.4.8 | amazon/aws-efs-csi-driver : v1.4.8 |
v1.4.7 | amazon/aws-efs-csi-driver : v1.4.7 |
v1.4.6 | amazon/aws-efs-csi-driver : v1.4.6 |
v1.4.5 | amazon/aws-efs-csi-driver : v1.4.5 |
v1.4.4 | amazon/aws-efs-csi-driver : v1.4.4 |
v1.4.3 | amazon/aws-efs-csi-driver : v1.4.3 |
v1.4.2 | amazon/aws-efs-csi-driver : v1.4.2 |
v1.4.1 | amazon/aws-efs-csi-driver : v1.4.1 |
v1.4.0 | amazon/aws-efs-csi-driver : v1.4.0 |
v1.3.8 | amazon/aws-efs-csi-driver : v1.3.8 |
v1.3.7 | amazon/aws-efs-csi-driver : v1.3.7 |
v1.3.6 | amazon/aws-efs-csi-driver : v1.3.6 |
v1.3.5 | amazon/aws-efs-csi-driver : v1.3.5 |
v1.3.4 | amazon/aws-efs-csi-driver : v1.3.4 |
v1.3.3 | amazon/aws-efs-csi-driver : v1.3.3 |
v1.3.2 | amazon/aws-efs-csi-driver : v1.3.2 |
v1.3.1 | amazon/aws-efs-csi-driver : v1.3.1 |
v1.3.0 | amazon/aws-efs-csi-driver : v1.3.0 |
v1.2.1 | amazon/aws-efs-csi-driver : v1.2.1 |
v1.2.0 | amazon/aws-efs-csi-driver : v1.2.0 |
v1.1.1 | amazon/aws-efs-csi-driver : v1.1.1 |
v1.1.0 | amazon/aws-efs-csi-driver : v1.1.0 |
v1.0.0 | amazon/aws-efs-csi-driver : v1.0.0 |
v0.3.0 | amazon/aws-efs-csi-driver : v0.3.0 |
v0.2.0 | amazon/aws-efs-csi-driver : v0.2.0 |
v0.1.0 | amazon/aws-efs-csi-driver : v0.1.0 |
Version du pilote | Image ECR |
---|---|
v2.1.0 | public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver:v2.1.0 |
Note
Vous pouvez trouver les images des versions précédentes du pilote efs-csi-driver ici
Note
Étant donné qu'Amazon EFS est un système de fichiers élastique, il n'impose pas vraiment de capacité au système de fichiers. La valeur réelle de la capacité de stockage dans le volume persistant et la revendication de volume persistant n'est pas utilisée lors de la création du système de fichiers. Cependant, comme la capacité de stockage est un champ obligatoire par Kubernetes, vous devez spécifier la valeur et vous pouvez utiliser n'importe quelle valeur valide pour la capacité.
Considérations
1.2
ou ultérieure du pilote. Vous pouvez provisionner de manière statique des volumes persistants à l'aide de la version 1.1
du pilote sur n'importe quelle version de cluster Amazon EKS prise en charge.1.3.2
ou ultérieure de ce pilote prend en charge l'architecture Arm64, y compris les instances basées sur Amazon EC2 Graviton.1.4.2
ou ultérieure de ce pilote prend en charge l'utilisation de FIPS pour le montage des systèmes de fichiers. Pour plus d’informations sur l’activation de FIPS, consultez Helm.Il existe des conditions de concurrence potentielles au démarrage du nœud (en particulier lorsqu'un nœud rejoint le cluster pour la première fois) dans lesquelles les pods/processus qui s'appuient sur le pilote EFS CSI peuvent agir sur un nœud avant que le pilote EFS CSI ne puisse démarrer et être entièrement prêt. Pour lutter contre cela, le pilote EFS CSI contient une fonctionnalité permettant de supprimer automatiquement une souillure du nœud au démarrage. Cette fonctionnalité a été introduite à partir de la version v1.7.2 du pilote EFS CSI et de la version v2.5.2 de sa charte Helm. Les utilisateurs peuvent corrompre leurs nœuds lorsqu'ils rejoignent le cluster et/ou au démarrage, pour empêcher d'autres pods de s'exécuter et/ou d'être planifiés sur le nœud avant que le pilote EFS CSI ne soit prêt.
Cette fonctionnalité est activée par défaut et les administrateurs de cluster doivent utiliser la teinte efs.csi.aws.com/agent-not-ready:NoExecute
(n'importe quel effet fonctionnera, mais NoExecute
est recommandé). Par exemple, les groupes de nœuds gérés EKS prennent automatiquement en charge la contamination des nœuds.
Conditions préalables
aws configure
dans le Guide de l'utilisateur de l'interface de ligne de commande AWS. La version AWS CLI installée dans AWS CloudShell peut également être plusieurs versions inférieures à la dernière version. Pour le mettre à jour, consultez Installation de l'AWS CLI dans votre répertoire personnel dans le Guide de l'utilisateur AWS CloudShell.kubectl
est installé sur votre appareil ou sur AWS CloudShell. La version peut être identique ou jusqu'à une version mineure antérieure ou ultérieure à la version Kubernetes de votre cluster. Pour installer ou mettre à niveau kubectl
, consultez Installation ou mise à jour kubectl
. Note
Un pod exécuté sur AWS Fargate monte automatiquement un système de fichiers Amazon EFS, sans avoir besoin des étapes d'installation manuelle du pilote décrites sur cette page.
Le pilote nécessite l'autorisation IAM pour communiquer avec Amazon EFS afin de gérer le volume au nom de l'utilisateur. Il existe plusieurs méthodes pour accorder l'autorisation IAM au pilote :
AmazonEFSCSIDriverPolicy
doit être ajoutée au rôle IAM du groupe de nœuds du cluster.Il existe plusieurs options pour déployer le pilote. Voici quelques exemples.
Cette procédure nécessite Helm V3 ou version ultérieure. Pour installer ou mettre à niveau Helm, consultez Utilisation de Helm avec Amazon EKS.
Pour installer le pilote à l'aide de Helm
Ajoutez le dépôt Helm.
helm repo add aws-efs-csi-driver https://kubernetes-sigs.github.io/aws-efs-csi-driver/
Mettez à jour le dépôt.
helm repo update aws-efs-csi-driver
Installez une version du pilote à l'aide de la charte Helm.
helm upgrade --install aws-efs-csi-driver --namespace kube-system aws-efs-csi-driver/aws-efs-csi-driver
Pour spécifier un référentiel d'images, ajoutez l'argument suivant. Remplacez l'adresse du référentiel par l'adresse de l'image du conteneur du cluster.
--set image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/aws-efs-csi-driver
Si vous avez déjà créé un compte de service en suivant Créer une stratégie et un rôle IAM pour Amazon EKS, ajoutez les arguments suivants.
--set controller.serviceAccount.create=false
--set controller.serviceAccount.name=efs-csi-controller-sa
Si vous ne disposez pas d'un accès sortant à Internet, ajoutez les arguments suivants.
--set sidecars.livenessProbe.image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/livenessprobe
--set sidecars.node-driver-registrar.image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/csi-node-driver-registrar
--set sidecars.csiProvisioner.image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/csi-provisioner
Pour forcer le pilote Amazon EFS CSI à utiliser FIPS pour monter le système de fichiers, ajoutez l'argument suivant.
--set useFips=true
Note
hostNetwork: true
(doit être ajouté sous spécification/déploiement sur les installations Kubernetes où les métadonnées AWS ne sont pas accessibles depuis le réseau de pods. Pour corriger l'erreur suivante NoCredentialProviders: no valid providers in chain
ce paramètre doit être ajouté.)
Si vous souhaitez télécharger l'image avec un manifeste, nous vous recommandons d'essayer d'abord ces étapes pour extraire les images sécurisées du registre privé Amazon ECR.
Pour installer le pilote à l'aide d'images stockées dans le registre privé Amazon ECR
Téléchargez le manifeste. Remplacez release-XX
par la branche souhaitée. Nous vous recommandons d'utiliser la dernière version publiée. Pour obtenir la liste des branches actives, voir Branches.
kubectl kustomize
" github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/ecr/?ref=release-2.X " > private-ecr-driver.yaml
Note
Si vous rencontrez un problème que vous ne parvenez pas à résoudre en ajoutant des autorisations IAM, essayez plutôt les étapes du manifeste (registre public).
Dans la commande suivante, remplacez region-code
par la région AWS dans laquelle se trouve votre cluster. Exécutez ensuite la commande modifiée pour remplacer us-west-2
dans le fichier par votre région AWS.
sed -i.bak -e ' s|us-west-2|region-code| ' private-ecr-driver.yaml
Remplacez account
dans la commande suivante par le compte des registres d'images de conteneurs Amazon pour la région AWS dans laquelle se trouve votre cluster, puis exécutez la commande modifiée pour remplacer 602401143452
dans le fichier.
sed -i.bak -e ' s|602401143452|account| ' private-ecr-driver.yaml
Si vous avez déjà créé un compte de service en suivant Créer une stratégie et un rôle IAM pour Amazon EKS, puis modifiez le fichier private-ecr-driver.yaml
. Supprimez les lignes suivantes qui créent un compte de service Kubernetes.
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/name: aws-efs-csi-driver
name: efs-csi-controller-sa
namespace: kube-system
---
Appliquez le manifeste.
kubectl apply -f private-ecr-driver.yaml
Dans certaines situations, vous ne pourrez peut-être pas ajouter les autorisations IAM nécessaires pour extraire du registre privé Amazon ECR. Un exemple de ce scénario est si votre principal IAM n'est pas autorisé à s'authentifier avec le compte de quelqu'un d'autre. Lorsque cela est vrai, vous pouvez utiliser le registre public Amazon ECR.
Pour installer le pilote à l'aide d'images stockées dans le registre public Amazon ECR
Téléchargez le manifeste. Remplacez release-XX
par la branche souhaitée. Nous vous recommandons d'utiliser la dernière version publiée. Pour obtenir la liste des branches actives, voir Branches.
kubectl kustomize
" github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.X " > public-ecr-driver.yaml
Si vous avez déjà créé un compte de service en suivant Créer une stratégie et un rôle IAM, modifiez le fichier public-ecr-driver.yaml
. Supprimez les lignes suivantes qui créent un compte de service Kubernetes.
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/name: aws-efs-csi-driver
name: efs-csi-controller-sa
namespace: kube-system
---
Appliquez le manifeste.
kubectl apply -f public-ecr-driver.yaml
Après avoir déployé le pilote, vous pouvez passer à ces sections :
Paramètres | Valeurs | Défaut | Facultatif | Description |
---|---|---|---|---|
vol-metrics-opt-in | FAUX | vrai | Inscrivez-vous pour émettre des mesures de volume. | |
période de rafraîchissement des mesures vol-métriques | 240 | vrai | Période d'actualisation des mesures de volume en minutes. | |
vol-metrics-fs-rate-limite | 5 | vrai | Limiteur de débit des routines de métriques de volume par système de fichiers. |
L'activation du paramètre vol-metrics-opt-in active la collecte des données d'inode et d'utilisation du disque. Cette fonctionnalité, en particulier dans les scénarios avec des systèmes de fichiers plus volumineux, peut entraîner une augmentation de l'utilisation de la mémoire en raison de l'agrégation détaillée des informations du système de fichiers. Nous conseillons aux utilisateurs disposant de systèmes de fichiers à grande échelle de prendre en compte cet aspect lors de l'utilisation de cette fonctionnalité.
Paramètres | Valeurs | Défaut | Facultatif | Description |
---|---|---|---|---|
supprimer-le-point-d'accès-root-dir | FAUX | vrai | Choisissez de supprimer le répertoire racine du point d’accès en supprimant le volume. Par défaut, DeleteVolume supprimera le point d'accès derrière le volume persistant et la suppression du point d'accès ne supprimera pas le répertoire racine du point d'accès ni son contenu. | |
balises | vrai | Paires clé/valeur séparées par des espaces qui seront ajoutées en tant que balises pour les ressources Amazon EFS. Par exemple, « --tags=name:efs-tag-test date:Jan24 » |
Si vous souhaitez mettre à jour vers la dernière version publiée :
kubectl apply -k " github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.0 "
Si vous souhaitez mettre à jour vers une version spécifique, personnalisez d'abord le fichier yaml du pilote localement :
kubectl kustomize " github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.0 " > driver.yaml
Ensuite, mettez à jour toutes les lignes faisant référence image: amazon/aws-efs-csi-driver
vers la version souhaitée (par exemple, vers image: amazon/aws-efs-csi-driver:v2.1.0
) dans le fichier yaml et déployez le pilote yaml encore:
kubectl apply -f driver.yaml
Avant de suivre les exemples, vous devez :
elasticfilesystem:DescribeMountTargets
et ec2:DescribeAvailabilityZones
dans votre stratégie attachée au rôle de compte de service Amazon EKS, reportez-vous à l'exemple de stratégie ici. Veuillez consulter les spécifications CSI et la documentation du développeur Kubernetes CSI pour obtenir une compréhension de base du pilote CSI avant de commencer.
Si vous êtes sur le point de mettre à jour le fichier de stratégie iam, veuillez également mettre à jour la stratégie efs dans weaveworks/eksctl https://github.com/weaveworks/eksctl/blob/main/pkg/cfn/builder/statement.go */
Les dépendances sont gérées via le module go. Pour construire le projet, activez d'abord go mod en utilisant export GO111MODULE=on
, pour construire le projet, exécutez : make
Pour exécuter tous les tests unitaires, exécutez : make test
Pour extraire les journaux et dépanner le pilote, consultez dépannage/README.md.
Cette bibliothèque est sous licence Apache 2.0.