Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
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 la StorageClass pour utiliser 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 Création de rôles et attachement de politiques (console) dans le Guide de l’utilisateur IAM AWS.
-
-
Attachez la politique au rôle du cluster EKS.
-
Utilisez la console AWS pour trouver l’ARN du rôle du cluster EKS. Les informations relatives au rôle sont visibles dans la section Présentation. Pour de plus amples 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 ID de compte AWS, par exemple111122223333 -
<aws-region>: la région AWS de votre cluster, par exempleus-west-2
{ "Version": "2012-10-17", "Id": "key-auto-policy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-id>: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": "<account-id>", "kms:ViaService": "ec2.<aws-region>.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 section parameters de la ressource StorageClass est spécifique à AWS. Utilisez le tableau ci-dessous pour consulter les options disponibles.
| Paramètres | 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 » |
Nombre d’opérations d’E/S par seconde par Gio. Peut être utilisé pour les volumes IO1, IO2 et GP3. |
||
|
« allowAutoIOPSPerGBIncrease » |
true, false |
false |
Lorsque |
|
« iops » |
Nombre d’opérations d’E/S par seconde. Peut être utilisé pour les volumes IO1, IO2 et GP3. |
||
|
« throughput » |
125 |
Le débit est exprimé en Mio/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. |
|
« kmsKeyId » |
ARN complet de la clé à utiliser pour chiffrer le volume. Si aucune clé n’est spécifiée, AWS utilisera la clé KMS par défaut de la région du 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 |
||
|
« bytesPerInode » |
Nombre de |
||
|
« numberOfInodes » |
Nombre de |
||
|
« ext4BigAlloc » |
true, false |
false |
Modifie le système de fichiers |
|
« ext4ClusterSize » |
Taille des clusters utilisée lors du formatage d’un système de fichiers |
Pour plus d’informations, consultez Pilote CSI AWS EBS
Considérations
Note
Vous ne pouvez déployer des charges de travail qui dépendent des StorageClasses du mode automatique EKS que sur des 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 de plus amples 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 à l’extérieur avec le mode automatique EKS, vous devez ajouter manuellement une balise AWS avec 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 automatique EKS ajoutera des balises aux ressources AWS associées. Vous devrez mettre à jour le rôle IAM du cluster afin d’utiliser des balises personnalisées. Pour de plus amples informations, consultez Balises AWS personnalisées 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
-
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 recommande de configurer ce module complémentaire pour qu’il s’exécute sur le groupe de nœuds system 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 console AWS
-
Dans l’onglet Modules complémentaires, 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 de configuration des modules complémentaires
-
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