Création d’une classe de stockage - Amazon EKS

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 sur 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 le StorageClass pour utiliser les 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écifiant matchLabelExpressions pour filtrer selon eks.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 la StorageClass. EBS utilisera l’alias de clé aws/ebs par 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 :

  1. Créer une clé KMS autogérée.

  2. 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.

  3. 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 de plus amples informations, veuillez consulter Rôle IAM de cluster Amazon EKS.

  4. Mettez à jour la StorageClass pour faire référence à l’ID de la clé KMS dans le champ parameters.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 que 111122223333

  • <aws-region>— La AWS région de votre cluster, telle que us-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 dans la documentation Kubernetes.

THe parameterssection 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 »

Nombre d’opérations d’E/S par seconde par Gio. Peut être spécifié pour IO1 IO2, et les GP3 volumes.

« Autoriser Auto IOPSPer GBIncrease »

true, false

false

Lorsque "true" le pilote CSI augmente le nombre d'IOPS pour un volume trop faible pour correspondre à la plage d'IOPS prise en charge par. iopsPerGB * <volume size> AWS Cela permet au provisionnement dynamique de réussir en tout temps, même si l’utilisateur spécifie une capacité PVC trop faible ou une valeur iopsPerGB insuffisante. Cependant, cette fonctionnalité peut entraîner des coûts plus élevés, car ces volumes obtiennent un niveau d’IOPS supérieur à celui demandé dans iopsPerGB.

« iops »

Nombre d’opérations d’E/S par seconde. Peut être spécifié pour IO1 IO2, et les GP3 volumes.

« 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 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 /aws/ebs.

« 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 ext2, ext3, ext4 ou xfs.

« 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 ext2, ext3, ext4 ou xfs.

"bytesPerInode"

Nombre de bytes-per-inode utilisé 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 ext2, ext3 et ext4.

"numberOfInodes"

Nombre de number-of-inodes utilisé 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 ext2, ext3 et ext4.

« poste 4 BigAlloc »

true, false

false

Modifie le système de fichiers ext4 pour activer l’allocation de blocs en clusters en utilisant l’option de formatage bigalloc. Avertissement : bigalloc peut ne pas être entièrement pris en charge par le noyau Linux de vos nœuds.

« poste 4 ClusterSize »

Taille des clusters utilisée lors du formatage d’un système de fichiers ext4 lorsque la fonctionnalité bigalloc est activée. Remarque : le paramètre ext4BigAlloc doit être défini sur true.

Pour plus d'informations, voir le pilote AWS EBS CSI activé. GitHub

Considérations

Note

Vous pouvez uniquement déployer des charges de travail 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 de plus amples informations, veuillez consulter 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 automatique EKS, vous devez ajouter manuellement une AWS balise avec la clé eks:eks-cluster-name et 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 StorageClass pour ajouter des balises personnalisées. Le mode automatique EKS 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 de plus amples informations, veuillez consulter AWS Balises 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 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 en savoir plus, consultez :

Pour installer le contrôleur d’instantané dans le groupe de nœuds système

  1. Ouvrez votre cluster EKS dans la AWS console

  2. Dans l’onglet Modules complémentaires, sélectionnez Obtenir plus de modules complémentaires

  3. Sélectionnez le module CSI Snapshot Controller, puis Suivant

  4. 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

    1. 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 rejet CriticalAddonsOnly.

      { "nodeSelector": { "karpenter.sh/nodepool": "system" } }
    2. Sélectionnez Suivant

  5. Vérifier la configuration du module complémentaire, puis sélectionnez Créer