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.
Ce didacticiel vous guidera dans le déploiement d'un exemple d'application dynamique sur votre cluster EKS Auto Mode. L'application écrit des horodatages sur un volume persistant, démontrant ainsi les fonctionnalités de provisionnement automatique et de persistance des volumes EBS d'EKS Auto Mode.
Prérequis
-
Un cluster en mode automatique EKS
-
La AWS CLI configurée avec les autorisations appropriées
-
kubectl
installé et configuré-
Pour de plus amples informations, veuillez consulter Configuration pour utiliser Amazon EKS.
-
Étape 1 : Configuration de votre environnement
-
Définissez vos variables d'environnement :
export CLUSTER_NAME=my-auto-cluster export AWS_REGION="us-west-2"
-
Mettez à jour votre kubeconfig :
aws eks update-kubeconfig --name "${CLUSTER_NAME}"
Étape 2 : Création de la classe de stockage
StorageClass
définit la manière dont le mode automatique EKS approvisionnera les volumes EBS.
Le mode automatique EKS ne crée StorageClass
pas de Vous devez créer un StorageClass
référencement ebs.csi.eks.amazonaws.com
pour utiliser la capacité de stockage du mode automatique EKS.
-
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" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true"
-
Appliquez le
StorageClass
:kubectl apply -f storage-class.yaml
Composants clés :
-
provisioner: ebs.csi.eks.amazonaws.com
- Utilise le mode automatique EKS -
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 utilisera laaws/ebs
clé par défaut pour chiffrer les volumes créés avec cette classe. Cette action est facultative, mais recommandée. -
storageclass.kubernetes.io/is-default-class: "true"
- Kubernetes utilisera cette classe de stockage par défaut, sauf si vous spécifiez une classe de volume différente dans le cadre d'une réclamation de volume persistant. Soyez prudent lorsque vous définissez cette valeur si vous effectuez une migration depuis un autre contrôleur de stockage. (facultatif)
Étape 3 : Création de la réclamation de volume persistante
Le PVC demande le stockage auStorageClass
.
-
Créez un fichier nommé
pvc.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: auto-ebs-claim spec: accessModes: - ReadWriteOnce storageClassName: auto-ebs-sc resources: requests: storage: 8Gi
-
Appliquez le PVC :
kubectl apply -f pvc.yaml
Composants clés :
-
accessModes: ReadWriteOnce
- Le volume peut être monté par un nœud à la fois -
storage: 8Gi
- Demande un volume de 8 GiB -
storageClassName: auto-ebs-sc
- Références queStorageClass
nous avons créées
Étape 4 : Déploiement de l'application
Le déploiement exécute un conteneur qui écrit des horodatages sur le volume persistant.
-
Créez un fichier nommé
deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: inflate-stateful spec: replicas: 1 selector: matchLabels: app: inflate-stateful template: metadata: labels: app: inflate-stateful spec: terminationGracePeriodSeconds: 0 nodeSelector: eks.amazonaws.com/compute-type: auto containers: - name: bash image: public.ecr.aws/docker/library/bash:4.4 command: ["/usr/local/bin/bash"] args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 60; done"] resources: requests: cpu: "1" volumeMounts: - name: persistent-storage mountPath: /data volumes: - name: persistent-storage persistentVolumeClaim: claimName: auto-ebs-claim
-
Appliquez le déploiement :
kubectl apply -f deployment.yaml
Composants clés :
-
Conteneur bash simple qui écrit des horodatages dans un fichier
-
Fixe le PVC sur
/data
-
Demande 1 cœur de processeur
-
Utilise le sélecteur de nœuds pour les nœuds gérés par EKS
Étape 5 : vérifier la configuration
-
Vérifiez que le pod fonctionne :
kubectl get pods -l app=inflate-stateful
-
Vérifiez que le PVC est lié :
kubectl get pvc auto-ebs-claim
-
Vérifiez le volume EBS :
# Get the PV name PV_NAME=$(kubectl get pvc auto-ebs-claim -o jsonpath='{.spec.volumeName}') # Describe the EBS volume aws ec2 describe-volumes \ --filters Name=tag:CSIVolumeName,Values=${PV_NAME}
-
Vérifiez que les données sont en cours d'écriture :
kubectl exec "$(kubectl get pods -l app=inflate-stateful \ -o=jsonpath='{.items[0].metadata.name}')" -- \ cat /data/out.txt
Étape 6 : nettoyage
Exécutez la commande suivante pour supprimer toutes les ressources créées dans ce didacticiel :
# Delete all resources in one command
kubectl delete deployment/inflate-stateful pvc/auto-ebs-claim storageclass/auto-ebs-sc
Ce qui se passe dans les coulisses
-
Le PVC demande à être entreposé auprès du
StorageClass
-
Lorsque le Pod est programmé :
-
Le mode automatique EKS approvisionne un volume EBS
-
Crée un PersistentVolume
-
Attache le volume au nœud
-
-
Le Pod monte le volume et commence à écrire des horodatages
Contrôleur Snapshot
Le mode automatique EKS est compatible avec le Kubernetes CSI Snapshotter, également connu sous le nom de Snapshot Controller. Cependant, le mode automatique EKS n'inclut pas le contrôleur de capture instantanée. Vous êtes responsable de l'installation et de la configuration du contrôleur de capture instantanée. Pour de plus amples informations, veuillez consulter Activer la fonctionnalité de capture instantanée pour les volumes CSI.
Consultez VolumeSnapshotClass
ce qui suit qui fait référence à la capacité de stockage du mode automatique EKS.
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: auto-ebs-vsclass
driver: ebs.csi.eks.amazonaws.com
deletionPolicy: Delete
En savoir plus sur le Kubernetes CSI Snapshotter.