Le produit décrit dans cette documentation, Anthos Clusters on AWS (génération précédente), est désormais en mode de maintenance. Toutes les nouvelles installations doivent utiliser le produit de génération actuelle, Anthos Clusters on AWS.
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Présentation
Si vous disposez déjà d'un volume AWS Elastic Block Store (EBS) à importer dans 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
À partir de votre répertoire anthos-aws, utilisez anthos-gke pour basculer vers le contexte de votre cluster d'utilisateur.
cd anthos-aws
env HTTPS_PROXY=http://localhost:8118 \
anthos-gke aws clusters get-credentials CLUSTER_NAME
Remplacez CLUSTER_NAME par le nom de votre cluster d'utilisateur.
Créer un PersistentVolume pour un volume EBS existant
Vous pouvez importer un volume EBS existant en spécifiant un nouveau PV.
Copiez le fichier YAML suivant dans un fichier nommé existing-volume.yaml, puis finalisez la configuration en remplaçant les valeurs suivantes :
volume-capacity : taille du volume. Par exemple, 30Gi.
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.
Vous pouvez par exemple utiliser la valeur par défaut standard-rwo.
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 et terminez la configuration en remplaçant les valeurs suivantes :
storage-class : nom de l'objet StorageClass du PersistentVolume que vous avez créé précédemment. Exemple : standard-rwo.
volume-name : nom du volume que vous avez créé précédemment.
volume-capacity : taille du volume. Par exemple, 30Gi.
Vérifiez l'état de votre instance Nginx avec kubectl describe. Dans le résultat, STATUS doit être à l'état Running.
kubectldescribepodweb-server
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 obtenir le nom du rôle IAM AWS, procédez comme suit :
Accédez au répertoire contenant votre configuration GKE sur AWS.
Vous avez créé ce répertoire lors de l'installation du service de gestion.
cd anthos-aws
Indiquez si vous avez créé votre environnement GKE sur AWS avec l'outil anthos-gke ou si vous avez créé vos profils IAM AWS manuellement.
Outil anthos-gke
Exécutez la commande terraform output et recherchez la valeur de iamInstanceProfile.
terraformoutput|grepiamInstanceProfile
Si vous avez créé votre environnement GKE sur AWS avec l'outil anthos-
gke, le résultat se présente comme suit:
Copiez la valeur de INSTANCE_PROFILE_NAME pour l'étape suivante.
Pour permettre au plan de contrôle d'accéder à vos volumes EBS, ajoutez le profil IAM AWS gke-xxxxxx-controlplane en tant qu'utilisateur de clé à la clé KMS AWS utilisée pour chiffrer votre volume EBS.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/31 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/31 (UTC)."],[],[],null,["# Importing a preexisting EBS volume\n\nOverview\n--------\n\nIf you already have an AWS Elastic Block Store (EBS) volume to import into\nGKE on AWS, you can create a PersistentVolume (PV) object and\nreserve it for a specific PersistentVolumeClaim (PVC).\n\nThis page explains how to create a PV by using an existing EBS volume\npopulated with data, and how to use the PV in a Pod.\n\nBefore you begin\n----------------\n\n- From your `anthos-aws` directory, use `anthos-gke` to switch context to your user cluster. \n\n ```sh\n cd anthos-aws\n env HTTPS_PROXY=http://localhost:8118 \\\n anthos-gke aws clusters get-credentials CLUSTER_NAME\n ```\n Replace \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e with your user cluster name.\n\n### Creating a PersistentVolume for a pre-existing EBS volume\n\nYou can import an existing EBS volume by specifying a new PV.\n\n1. Copy the following YAML into a file named `existing-volume.yaml` and complete\n your configuration by replacing the values:\n\n - \u003cvar translate=\"no\"\u003evolume-capacity\u003c/var\u003e: size of the volume. For example, `30Gi`. For more information on specifying volume capacity in Kubernetes, see the [Meaning of memory](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory).\n - \u003cvar translate=\"no\"\u003estorage-class-name\u003c/var\u003e: the name of the StorageClass that\n provisions the volume.\n For example, you can use the default `standard-rwo`.\n\n | **Note:** A StorageClass is required to reference other attributes like `allowVolumeExpansion`, even if a volume is not dynamically provisioned.\n - \u003cvar translate=\"no\"\u003eebs-id\u003c/var\u003e: EBS [volume id](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volumes.html#examples).\n For example, `vol-05786ec9ec9526b67`.\n\n - \u003cvar translate=\"no\"\u003efs-type\u003c/var\u003e: The\n [file system](https://github.com/kubernetes-sigs/aws-ebs-csi-driver#createvolume-parameters)\n of the volume. For example, `ext4`.\n\n - \u003cvar translate=\"no\"\u003ezone\u003c/var\u003e: The AWS Availability Zone that hosts the EBS volume.\n For example, `us-east-1c`.\n\n apiVersion: v1\n kind: PersistentVolume\n metadata:\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003evolume-name\u003c/span\u003e\u003c/var\u003e\n annotations:\n pv.kubernetes.io/provisioned-by: ebs.csi.aws.com\n spec:\n capacity:\n storage: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003evolume-capacity\u003c/span\u003e\u003c/var\u003e\n accessModes:\n - ReadWriteOnce\n persistentVolumeReclaimPolicy: Retain\n storageClassName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003estorage-class-name\u003c/span\u003e\u003c/var\u003e\n claimRef:\n name: my-pvc\n namespace: default\n csi:\n driver: ebs.csi.aws.com\n volumeHandle: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eebs-volume-id\u003c/span\u003e\u003c/var\u003e\n fsType: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003efile-system-type\u003c/span\u003e\u003c/var\u003e\n nodeAffinity:\n required:\n nodeSelectorTerms:\n - matchExpressions:\n - key: topology.ebs.csi.aws.com/zone\n operator: In\n values:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003ezone\u003c/span\u003e\u003c/var\u003e\n\n2. Apply the YAML to your cluster\n\n kubectl apply -f existing-volume.yaml\n\n3. Confirm the creation of your PV\n\n kubectl describe pv \u003cvar translate=\"no\"\u003evolume-name\u003c/var\u003e\n\n The output of this command contains the status of the PV.\n\nUsing the volume with a PersistentVolumeClaim and Pod\n-----------------------------------------------------\n\nAfter you have imported your volume, you can create a PVC and a Pod that\nattaches the PVC.\n\nThe YAML below creates a PVC and attaches it to a Pod running the Nginx web\nserver. Copy it into a file named `nginx.yaml` and complete your configuration\nby replacing the values:\n\n- \u003cvar translate=\"no\"\u003estorage-class\u003c/var\u003e: The name of the StorageClass from the PersistentVolume you created previously. For example, `standard-rwo`.\n- \u003cvar translate=\"no\"\u003evolume-name\u003c/var\u003e: The name of the volume you created previously.\n- \u003cvar translate=\"no\"\u003evolume-capacity\u003c/var\u003e: size of the volume. For example, `30Gi`.\n\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: my-pvc\n spec:\n storageClassName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003estorage-class-name\u003c/span\u003e\u003c/var\u003e\n volumeName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003evolume-name\u003c/span\u003e\u003c/var\u003e\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003evolume-capacity\u003c/span\u003e\u003c/var\u003e\n ---\n\n apiVersion: v1\n kind: Pod\n metadata:\n name: web-server\n spec:\n containers:\n - name: web-server\n image: nginx\n volumeMounts:\n - mountPath: /var/lib/www/html\n name: data\n volumes:\n - name: data\n persistentVolumeClaim:\n claimName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003emy-pvc\u003c/span\u003e\u003c/var\u003e\n\n1. Apply the YAML to your cluster\n\n kubectl apply -f nginx.yaml\n\n2. Check the status of your Nginx instance with `kubectl describe`. The output\n should have a `STATUS` of `Running`.\n\n kubectl describe pod web-server\n\nUsing encrypted EBS volumes\n---------------------------\n\nIf your EBS volume is encrypted with the AWS Key Management Service (KMS), you\nneed to grant the GKE on AWS control plane AWS IAM role access to\nyour KMS key.\n\nTo get the AWS IAM role name, perform the following steps:\n\n1. Change to the directory with your GKE on AWS configuration.\n You created this directory when\n [Installing the management service](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/installing-management).\n\n ```sh\n cd anthos-aws\n ```\n\n \u003cbr /\u003e\n\n2. Choose if you created your GKE on AWS environment with the\n `anthos-gke` tool or if you created your AWS IAM profiles manually.\n\n ### anthos-gke tool\n\n Use the `terraform output` command and search for the value of\n `iamInstanceProfile`. \n\n terraform output | grep iamInstanceProfile\n\n If you created your GKE on AWS environment with the `anthos-\n gke` tool, the output looks like the following: \n\n iamInstanceProfile: gke-\u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e-controlplane\n iamInstanceProfile: gke-\u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e-nodepool\n\n Where \u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e is your cluster's ID. Copy the value of\n `gke-`\u003cvar translate=\"no\"\u003eCLUSTER_ID\u003c/var\u003e`-controlplane` for the following step.\n\n ### Manually created\n\n Examine the output of `terraform output` with the following command: \n\n terraform output | less\n\n Scroll through the output and find the iamInstanceProfile after the\n AWSCluster definition. \n\n kind: AWSCluster\n metadata:\n name: cluster-0\n spec:\n ...\n controlPlane:\n ...\n iamInstanceProfile: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eINSTANCE_PROFILE_NAME\u003c/span\u003e\u003c/var\u003e\n\n Copy the value of `INSTANCE_PROFILE_NAME` for the following\n step.\n3. To grant the control plane access to your EBS volumes, add the\n `gke-xxxxxx-controlplane` AWS IAM profile as a\n [Key User](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#key-policy-default-allow-users)\n to the AWS KMS key used to encrypt your EBS volume.\n\nWhat's next\n-----------\n\n- Use additional [storage drivers](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/storage-drivers) with GKE on AWS."]]