Descripción general
Si ya tienes un volumen de AWS Elastic Block Store (EBS) para importar a clústeres de GKE on AWS, puedes crear un objeto PersistentVolume (PV) y reservarlo para una PersistentVolumeClaim (PVC) específica.
En esta página, se explica cómo crear un PV con un volumen de EBS existente propagado con datos y cómo usarlo en un Pod.
Antes de comenzar
- Desde tu directorio de
anthos-aws
, usaanthos-gke
para cambiar el contexto a tu clúster de usuario.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Reemplaza CLUSTER_NAME por el nombre de tu clúster de usuario.
Crea un PersistentVolume para un volumen de EBS preexistente
Puedes importar un volumen de EBS existente especificando un nuevo PV.
Copia el siguiente YAML a un archivo llamado
existing-volume.yaml
y completa la configuración con el reemplazo de los siguientes valores:- volume-capacity: El tamaño del volumen. Por ejemplo,
30Gi
. Para obtener más información sobre cómo especificar la capacidad de volumen en Kubernetes, consulta el Significado de memoria. storage-class-name: El nombre de la StorageClass que aprovisiona el volumen. Por ejemplo, puedes usar el
standard-rwo
predeterminado.ebs-id: El ID de volumen de EBS. Por ejemplo,
vol-05786ec9ec9526b67
.fs-type: El sistema de archivos del volumen. Por ejemplo,
ext4
.zone: La zona de disponibilidad de AWS que aloja el volumen de EBS. Por ejemplo,
us-east-1c
.
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
- volume-capacity: El tamaño del volumen. Por ejemplo,
Aplica el YAML al clúster.
kubectl apply -f existing-volume.yaml
Confirma la creación del PV.
kubectl describe pv volume-name
El resultado de este comando contiene el estado del PV.
Usa el volumen con un PersistentVolumeClaim y un Pod
Después de importar el volumen, puedes crear un PVC y un Pod que conecte el PVC.
Mediante el YAML a continuación, se crea un PVC y se lo conecta a un Pod que ejecuta el servidor web Nginx. Cópialo en un archivo llamado nginx.yaml
y reemplaza los siguientes valores para completar la configuración:
- storage-class: El nombre de la StorageClass del PersistentVolume que creaste antes. Por ejemplo,
standard-rwo
. - volume-name: El nombre del volumen que creaste antes.
- volume-capacity: El tamaño del volumen. Por ejemplo,
30Gi
.
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: my-pvc
Aplica el YAML al clúster.
kubectl apply -f nginx.yaml
Verifica el estado de la instancia Nginx con
kubectl describe
. El resultado debería tener unSTATUS
deRunning
.kubectl describe pod web-server
Usa volúmenes de EBS encriptados
Si tu volumen de EBS está encriptado con el servicio de administración de claves (KMS) de AWS, debes otorgar acceso a tu clave de KMS al rol de IAM de AWS del plano de control de AWS de GKE en AWS.
Para obtener el nombre del rol de IAM de AWS, realiza los pasos que se indican a continuación:
Cambia al directorio con la configuración de GKE en AWS. Creaste este directorio cuando instalaste el servicio de administración.
cd anthos-aws
Elige si creaste tus entorno de GKE en AWS con la herramienta de
anthos-gke
o si creaste tus perfiles de IAM de AWS de forma manual.Herramienta anthos-gke
Usa el comando
terraform output
y busca el valor deiamInstanceProfile
.terraform output | grep iamInstanceProfile
Si creaste tu entorno de GKE en AWS con la herramienta de
anthos- gke
, el resultado será como el siguiente:iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool
Donde CLUSTER_ID es el ID de tu clúster. Copia el valor de
gke-CLUSTER_ID-controlplane
para el siguiente paso.Creación manual
Examina el resultado de
terraform output
con el siguiente comando:terraform output | less
Desplázate por el resultado y busca el iamInstanceProfile después de la definición de AWSCluster.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
Copia el valor de
INSTANCE_PROFILE_NAME
para el siguiente paso.Para otorgar acceso al plano de control a tus volúmenes de EBS, agrega el perfil de IAM de AWS
gke-xxxxxx-controlplane
como un usuario de claves a la clave de KMS de AWS que se usa para encriptar tu volumen de EBS.
¿Qué sigue?
- Usa controladores de almacenamiento adicionales con GKE en AWS.