Aidez à améliorer cette page
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.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.
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.
Création d’une classe de stockage
Une StorageClass dans le mode automatique Amazon EKS définit la façon dont les volumes Amazon EBS sont automatiquement provisionnés lorsque les applications demandent du stockage persistant. Cette page explique comment créer et configurer une StorageClass compatible avec le mode automatique Amazon EKS pour le provisionnement de volumes EBS.
En configurant une StorageClass, vous pouvez définir les paramètres par défaut de vos volumes EBS, notamment le type de volume, le chiffrement, le nombre d’IOPS et d’autres paramètres liés au stockage. Vous pouvez également configurer l'utilisation StorageClass des clés AWS KMS pour la gestion du chiffrement.
Le mode automatique EKS ne crée pas de StorageClass pour vous. Vous devez créer une StorageClass faisant référence à ebs.csi.eks.amazonaws.com pour utiliser les fonctionnalités de stockage du mode automatique EKS.
Tout d’abord, créez un fichier nommé storage-class.yaml :
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" allowedTopologies: - matchLabelExpressions: - key: eks.amazonaws.com/compute-type values: - auto provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true"
Ensuite, appliquez la classe de stockage à votre cluster.
kubectl apply -f storage-class.yaml
Composants clés :
-
provisioner: ebs.csi.eks.amazonaws.com: utilise le mode automatique EKS -
allowedTopologies: en spécifiantmatchLabelExpressionspour filtrer seloneks.amazonaws.com/compute-type:auto, vous vous assurez que si vos pods ont besoin qu’un volume soit automatiquement provisionné via le mode automatique, ceux-ci ne seront pas programmés sur des nœuds qui ne sont pas gérés par le mode automatique. -
volumeBindingMode: WaitForFirstConsumer: retarde la création du volume jusqu’à ce qu’un pod en ait besoin -
type: gp3: spécifie le type de volume EBS -
encrypted: "true": EBS chiffre tous les volumes créés avec laStorageClass. EBS utilisera l’alias de cléaws/ebspar défaut. Pour plus d’informations, consultez Fonctionnement du chiffrement Amazon EBS dans le Guide de l’utilisateur Amazon EBS. Cette valeur est facultative, mais recommandée. -
storageclass.kubernetes.io/is-default-class: "true": Kubernetes utilisera cette classe de stockage par défaut, à moins que vous ne spécifiiez une autre classe de volume dans une demande de volume persistant. Cette valeur est facultative. Faites preuve de prudence lorsque vous définissez cette valeur si vous effectuez une migration depuis un autre contrôleur de stockage.
Utilisation d’une clé KMS autogérée pour chiffrer les volumes EBS
Pour utiliser une clé KMS autogérée afin de chiffrer des volumes EBS automatisés par le mode automatique EKS, vous devez :
-
Créer une clé KMS autogérée.
-
Pour plus d’informations, consultez Création d’une clé KMS de chiffrement symétrique ou Utilisation de KMS par Amazon Elastic Block Store (Amazon EBS).
-
-
Créez une nouvelle politique permettant l’accès à la clé KMS.
-
Utilisez l’exemple de politique IAM ci-dessous comme modèle pour créer la politique. Insérez l’ARN de votre nouvelle clé KMS autogérée. Pour plus d'informations, consultez la section Création de rôles et attachement de politiques (console) dans le Guide de l'utilisateur AWS IAM.
-
-
Attachez la politique au rôle du cluster EKS.
-
Utilisez la AWS console pour trouver l'ARN du rôle de cluster EKS. Les informations relatives au rôle sont visibles dans la section Présentation. Pour plus d’informations, consultez Rôle IAM de cluster Amazon EKS.
-
-
Mettez à jour la
StorageClasspour faire référence à l’ID de la clé KMS dans le champparameters.kmsKeyId.
Exemple de politique IAM KMS autogérée
Mettez à jour les valeurs suivantes dans la politique ci-dessous :
-
<account-id>— Votre identifiant de AWS compte, tel que111122223333 -
<aws-region>— La AWS région de votre cluster, telle queus-west-2
{ "Version":"2012-10-17", "Id": "key-auto-policy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "123456789012", "kms:ViaService": "ec2.us-east-1.amazonaws.com" } } } ] }
Exemple de StorageClass KMS autogérée
parameters: type: gp3 encrypted: "true" kmsKeyId: <custom-key-arn>
Référence des paramètres StorageClass
Pour des informations générales sur les ressources StorageClass de Kubernetes, consultez Classes de stockage
La parameters section de la StorageClass ressource est spécifique à AWS. Utilisez le tableau ci-dessous pour consulter les options disponibles.
| Parameters | Valeurs | Par défaut | Description |
|---|---|---|---|
|
« csi.storage.k8s. io/fstype» |
xfs, ext2, ext3, ext4 |
ext4 |
Type de système de fichiers qui sera formaté lors de la création du volume. Ce paramètre n’est pas sensible à la casse ! |
|
« type » |
io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1 |
gp3 |
Type de volume EBS. |
|
« iopsPerGB » |
I/O opérations par seconde par GiB. Peut être utilisé pour les volumes IO1, IO2 et GP3. |
||
|
« autoriser AutoIOPSPerGBIncrease » |
true, false |
false |
Lorsque |
|
« iops » |
I/O opérations par seconde. Peut être utilisé pour les volumes IO1, IO2 et GP3. |
||
|
« throughput » |
125 |
Débit en MiB/s. Efficace uniquement lorsque le type de volume gp3 est spécifié. |
|
|
« encrypted » |
true, false |
false |
Indique si le volume doit être chiffré ou non. Les valeurs valides sont « true » ou « false ». |
|
« blockExpress » |
true, false |
false |
Permet la création de volumes io2 Block Express. |
|
« km KeyId » |
ARN complet de la clé à utiliser pour chiffrer le volume. Si elle n'est pas spécifiée, AWS utilisera la clé KMS par défaut pour la région dans laquelle se trouve le volume. Si elle n’a pas été modifiée, cette clé autogénérée s’appelera |
||
|
« blockSize » |
Taille des blocs utilisée lors du formatage du système de fichiers sous-jacent. Prise en charge uniquement sur les nœuds Linux et pour les types de systèmes de fichiers |
||
|
« inodeSize » |
Taille des inodes utilisée lors du formatage du système de fichiers. Prise en charge uniquement sur les nœuds Linux et pour les types de systèmes de fichiers |
||
|
« octets PerInode » |
Nombre de |
||
|
« numéro OfInodes » |
Nombre de |
||
|
« texte 4 BigAlloc » |
true, false |
false |
Modifie le système de fichiers |
|
« texte 4 ClusterSize » |
Taille des clusters utilisée lors du formatage d’un système de fichiers |
Pour plus d'informations, consultez le pilote AWS
Considérations
Note
Vous ne pouvez déployer des charges de travail qu'en fonction du mode automatique EKS StorageClasses sur les nœuds du mode automatique EKS. Si votre cluster comporte différents types de nœuds, vous devez configurer vos charges de travail afin qu’elles s’exécutent uniquement sur les nœuds du mode automatique EKS. Pour plus d’informations, consultez Contrôle du déploiement d’une charge de travail sur les nœuds du mode automatique EKS.
La capacité de stockage par blocs du mode automatique EKS est différente de celle du pilote CSI EBS.
-
Provisionnement statique
-
Si vous souhaitez utiliser des volumes EBS créés en externe avec le mode EKS Auto, vous devez ajouter manuellement une AWS balise contenant la clé
eks:eks-cluster-nameet la valeur du nom du cluster.
-
-
Rejet de démarrage des nœuds
-
Vous ne pouvez pas utiliser la fonctionnalité de rejet de démarrage des nœuds pour empêcher la planification des pods avant que la capacité de stockage ne soit prête
-
-
Balises personnalisées sur les volumes provisionnés dynamiquement
-
Vous ne pouvez pas utiliser le paramètre CLI extra-tag pour configurer des balises personnalisées sur les volumes EBS provisionnés dynamiquement
-
Vous pouvez utiliser le balisage
StorageClasspour ajouter des balises personnalisées. Le mode EKS Auto ajoutera des balises aux AWS ressources associées. Vous devrez mettre à jour le rôle IAM du cluster afin d’utiliser des balises personnalisées. Pour plus d’informations, consultez Personnalisé AWS tags pour les ressources EKS Auto.
-
-
Métriques de performances détaillées d’EBS
-
Vous ne pouvez pas accéder aux métriques Prometheus pour les performances détaillées d’EBS
-
Annotation-based La modification du volume EBS est obsolète
Le volume-modifier-for-k8sVolumeAttributesClasstypeiops, outhroughput) après cette date, utilisez plutôt l'API VolumeAttributesClass Kubernetes. Pour plus d'informations, consultez la section Classes d'attributs de volume
Migrer de volume-modifier-for-k8s vers VolumeAttributesClass
Pour les clusters EKS Auto Mode exécutant Kubernetes 1.34 ou version ultérieure, utilisez un VolumeAttributesClass (VAC) pour modifier le type, les IOPS ou le débit d'un volume EBS.
Les PVC existants peuvent être migrés sur place en créant un VAC et en réglant spec.volumeAttributesClassName le PVC existant. Le PVC et le PV ne sont pas recréés et vos charges de travail ne sont pas interrompues au cours de ce processus.
-
Définissez les réglages de volume d'un VAC
Les annotations VMK correspondent aux paramètres VAC comme suit :
Annotation VMK existante Paramètre VAC ebs.csi.eks.amazonaws.com/volumeTypetype
ebs.csi.eks.amazonaws.com/iopsiops
ebs.csi.eks.amazonaws.com/throughputdébit
À utiliser
type, pasvolumeType, dans le VAC. Les valeurs doivent être des chaînes, et un VAC n'a besoin que des paramètres correspondant à la configuration EBS souhaitée. Exemple :apiVersion: storage.k8s.io/v1 kind: VolumeAttributesClass metadata: name: ebs-auto-gp3-6000-250 driverName: ebs.csi.eks.amazonaws.com parameters: type: gp3 iops: "6000" throughput: "250"Les VAC sont limités à un cluster, de sorte que le manifeste n'a pas d'espace de noms. Appliquez-le normalement :
kubectl apply -f vac.yaml -
Assignez le VAC au PVC
VAC_NAME=ebs-auto-gp3-6000-250 kubectl patch pvc <pvc-name> -n <namespace> --type=merge \ -p "{\"spec\":{\"volumeAttributesClassName\":\"${VAC_NAME}\"}}" -
Confirmez que la modification est terminée
kubectl get pvc <pvc-name> -n <namespace> \ -o custom-columns='NAME:.metadata.name,REQUESTED:.spec.volumeAttributesClassName,CURRENT:.status.currentVolumeAttributesClassName,STATUS:.status.modifyVolumeStatus.status'La migration est terminée lorsqu'elle
REQUESTEDCURRENTcontient le même nom de VAC etSTATUSqu'elle est vide.S'il ne se termine pas, inspectez les événements PVC :
kubectl describe pvc <pvc-name> -n <namespace>Pendingsignifie généralement que le VAC référencé n'est pas disponible.Infeasiblesignifie que le pilote a rejeté les paramètres EBS demandés ; créez un VAC valide et attribuez-le à la place.
Facultatif : supprimez les annotations VMK
Il n'est pas nécessaire de supprimer les anciennes annotations pour que VAC fonctionne. Une fois qu'un PVC ou un PV fait référence à un VAC, VMK refuse les modifications basées sur des annotations et VAC est la voie faisant autorité.
Les annotations peuvent être supprimées ultérieurement lors du nettoyage de la configuration. S'ils sont supprimés, mettez également à jour tout Helm ou toute autre automatisation qui les ajouterait à nouveau. GitOps Les annotations d'état de la VMK laissées sur le PV sont inoffensives et n'ont pas besoin d'être supprimées.
Modifier ou rétablir les paramètres
Les paramètres VAC sont immuables. Pour modifier la configuration EBS, créez un autre VAC et attribuez son nom au PVC.
Pour annuler une modification qui n'est pas terminée, restaurez le VAC précédemment attribué. Si le PVC n'en utilisait pas auparavant, effacez le champ :
kubectl patch pvc <pvc-name> -n <namespace> --type=merge \ -p '{"spec":{"volumeAttributesClassName":null}}'
La suppression du champ n'annule pas une modification EBS déjà effectuée. Pour rétablir les paramètres de volume précédents, créez un VAC contenant ces paramètres et attribuez-le au PVC. Les contraintes normales des paramètres EBS et les temps de recharge des modifications s'appliquent.
Installation du module complémentaire CSI Snapshot Controller
Le mode automatique EKS est compatible avec le module complémentaire Amazon EKS CSI Snapshot Controller.
AWS vous suggère de configurer ce module complémentaire pour qu'il s'exécute sur le pool de system nœuds intégré.
Pour plus d’informations, consultez :
Pour installer le contrôleur d’instantané dans le groupe de nœuds système
-
Ouvrez votre cluster EKS dans la AWS console
-
Add-onsDans l'onglet, sélectionnez Obtenir plus de modules complémentaires
-
Sélectionnez le module CSI Snapshot Controller, puis Suivant
-
Sur la page Configurer les paramètres des modules complémentaires sélectionnés, sélectionnez Paramètres de configuration facultatifs pour afficher le schéma Add-on de configuration
-
Insérez le fichier YAML suivant pour associer le contrôleur d’instantané au groupe de nœuds
system. Le contrôleur d’instantané inclut une tolérance pour le rejetCriticalAddonsOnly.{ "nodeSelector": { "karpenter.sh/nodepool": "system" } } -
Sélectionnez Suivant
-
-
Vérifier la configuration du module complémentaire, puis sélectionnez Créer