Présentation
Si vous disposez déjà d'un volume Elastic Block Store (EBS) AWS
à importer dans vos clusters GKE sur AWS, vous pouvez créer un objet PersistentVolume (PV) et le réserver pour une ressource PersistentVolumeClaim (PVC) spécifique.
Cette page explique comment créer un PV à l'aide d'un volume EBS existant contenant des données et comment utiliser le PV dans un pod.
Avant de commencer
Avant de suivre cette procédure, vous devez :
- Créer un cluster GKE sur AWS et configurer l'accès à celui-ci avec
kubectl
. - Se connecter au cluster et s'authentifier
Utiliser des volumes EBS chiffrés
Si votre volume EBS est chiffré avec le service de gestion des clés AWS (KMS), vous devez accorder au rôle IAM AWS du plan de contrôle de GKE sur AWS l'accès à votre clé KMS.
Pour accorder l'accès au rôle de plan de contrôle à votre clé :
Recherchez le nom du rôle de plan de contrôle de votre cluster.
Choisissez la clé AWS KMS utilisée pour chiffrer votre volume EBS, et ajoutez le rôle de plan de contrôle en tant qu'utilisateur de clé en suivant les instructions de la section Autoriser les utilisateurs de clé à utiliser la clé KMS.
Créer un PersistentVolume pour un volume EBS existant
Vous pouvez importer un volume EBS existant en spécifiant un nouveau PV et en l'ajoutant à votre cluster.
Copiez le fichier YAML suivant dans un fichier nommé
existing-volume.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: VOLUME_NAME annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com spec: capacity: storage: VOLUME_CAPACITY accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: STORAGE_CLASS_NAME claimRef: name: my-pvc namespace: default csi: driver: ebs.csi.aws.com volumeHandle: EBS_VOLUME_ID fsType: FILE_SYSTEM_TYPE nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ebs.csi.aws.com/zone operator: In values: - ZONE
Replace the following:
VOLUME_NAME
: nom de votre volume.VOLUME_CAPACITY
: taille du volume, par exemple,30G
. Pour en savoir plus sur la spécification de la capacité de volume dans Kubernetes, consultez la page Meaning of memory.STORAGE_CLASS_NAME
: nom de l'objet StorageClass qui provisionne le volume, par exemple,standard-rwo
.EBS_VOLUME_ID
: ID de votre volume EBS. Exemple :vol-05786ec9ec9526b67
FS_TYPE
: système de fichiers du volume, par exemple,ext4
.ZONE
: zone de disponibilité AWS qui héberge le volume EBS, par exemple,us-east-1c
.
Appliquez le code YAML à votre cluster :
kubectl apply -f existing-volume.yaml
Confirmez la création du PV :
kubectl describe pv volume-name
Le résultat de cette commande contient l'état du PV.
Utiliser le volume avec un PersistentVolumeClaim et un pod
Après avoir importé votre volume, vous pouvez créer un PVC et un pod auquel associer le PVC.
Le fichier YAML suivant crée un PVC et l'associe à un pod exécutant le serveur Web Nginx. Copiez-le dans un fichier nommé
nginx.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: STORAGE_CLASS_NAME volumeName: VOLUME_NAME accessModes: - ReadWriteOnce resources: requests: storage: VOLUME_CAPACITY --- apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: web-server image: nginx volumeMounts: - mountPath: /var/lib/www/html name: data volumes: - name: data persistentVolumeClaim: claimName: PVC_NAME
Remplacez les éléments suivants :
STORAGE_CLASS
: nom de l'objet StorageClass du PersistentVolume que vous avez créé précédemment, par exemple,standard-rwo
.VOLUME_NAME
VOLUME_CAPACITY
PVC_NAME
: nom du PVC, par exemple,my-pvc
.
Appliquez le code YAML à votre cluster :
kubectl apply -f nginx.yaml
Vérifiez l'état de votre instance Nginx avec
kubectl describe
. Dans le résultat,STATUS
doit être à l'étatRunning
.kubectl describe pod web-server
Étapes suivantes
- Utilisez des pilotes de stockage supplémentaires avec GKE sur AWS.