¿Cómo puedo migrar un volumen de EBS de gp2 a gp3 en Amazon EKS?
Quiero migrar el tipo de volumen de Amazon Elastic Block Store (Amazon EBS) de un SSD de uso general (gp2) a un SSD de uso general (gp3) en Amazon Elastic Kubernetes Service (Amazon EKS).
Descripción corta
Puedes usar el controlador de la interfaz de almacenamiento de contenedores (CSI) de Amazon EBS para modificar los volúmenes de Amazon EBS con anotaciones en PersistentVolumeClaims (PVC). Esta característica está disponible en la versión aws-ebs-csi-driver v1.19.0-eksbuild.2 o posterior. Puedes modificar los parámetros de tipo, iops y ** rendimiento** en PVC:
Para migrar el volumen de EBS de gp2 a gp3 en tu clúster de Amazon EKS, sigue estos pasos:
- Instala el controlador de CSI de Amazon EBS en tu clúster de Amazon EKS.
- Activa la característica de modificación del volumen en el controlador de CSI de Amazon EBS.
- Cambia el tipo de volumen de EBS.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Instala la característica de modificación de volumen en el controlador de CSI de Amazon EBS
La característica de modificación del volumen está disponible en la versión 1.19.0 del controlador de CSI de Amazon EBS. Lo utilizan el gráfico de Helm 2.19.0 o el complemento administrado de Amazon EKS v1.19.0-eksbuild.2. Esta característica se implementa como un sidecar adicional llamado volumemodifier. Debes activarlo manualmente en el controlador de CSI de Amazon EBS. Para obtener más información, consulta Volume modification (Modificación del volumen) en el sitio web de GitHub.
Para activar la característica de modificación de volumen en Amazon EKS, configura uno de los métodos siguientes:
- Configuración de complementos autoadministrados con Helm
- Configuración de complementos administrados de Amazon EKS
Configuración de complementos autoadministrados con Helm
-
Instala el controlador de CSI autoadministrado de Amazon EBS a través del gráfico de Helm y, a continuación, establece controller.volumeModificationFeature.enabled en true.
Ejemplo de YAML:cat values.yaml controller: volumeModificationFeature: enabled: true -
Actualiza la configuración. Ejecuta el siguiente comando:
helm upgrade aws-ebs-csi-driver --namespace kube-system \ aws-ebs-csi-driver/aws-ebs-csi-driver -f values.yaml
Configuración de complementos administrados de Amazon EKS
-
Crea un archivo de configuración. Ejecuta el siguiente comando:
cat eks-addon-ebs-csi-driver-config.json { "controller": { "volumeModificationFeature": { "enabled": true } } } -
Actualiza el complemento del controlador de CSI de Amazon EBS con el archivo de configuración. Ejecuta el siguiente comando:
aws eks update-addon --cluster-name eks-demo \ --addon-name aws-ebs-csi-driver \ --service-account-role-arn arn:aws:iam::{AWS_ACCOUNT_ID}:role/AmazonEKS-EBS-CSI-DriverRole \ --configuration-values 'file://eks-addon-ebs-csi-driver-config.json' { "update": { ... "status": "InProgress", "type": "AddonUpdate", "params": [ ... { "type": "ConfigurationValues", "value": "{\n \"controller\": {\n \"volumeModificationFeature\": {\n \"enabled\": true\n }\n }\n}" } ], ... } } -
Comprueba que el volumemodifier del sidecar adicional esté activo. Ejecuta el siguiente comando:
kubectl get pod -n kube-system -l=app=ebs-csi-controllerResultado de ejemplo:
NAME READY STATUS RESTARTS AGE ebs-csi-controller-5f985b94f4-lk7lv 7/7 Running 0 2m29s ebs-csi-controller-5f985b94f4-m5nn8 7/7 Running 0 2m29s -
Comprueba los nombres de los contenedores. Ejecuta el siguiente comando:
kubectl get pod -n kube-system ebs-csi-controller-5f985b94f4-lk7lv -o jsonpath='{.spec.containers[*].name}{"\n"}'Resultado de ejemplo:
ebs-plugin csi-provisioner csi-attacher csi-snapshotter volumemodifier csi-resizer liveness-probe
Cambio de tipo de volumen de EBS
-
Revisa el estado actual de PVC y PersistentVolume (PV). Ejecuta los siguientes comandos:
kubectl get scResultado de ejemplo:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 6h23mkubectl get pvc ebs-demo-claimResultado de ejemplo:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE ebs-demo-claim Bound pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 4Gi RWO gp2 <unset> 18skubectl get pv pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30Resultado de ejemplo:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 4Gi RWO Delete Bound default/ebs-demo-claim gp2 <unset> 36s -
Consulta los detalles de PV. Ejecuta el siguiente comando:
kubectl get pv pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 -o yamlResultado de ejemplo:
apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/migrated-to: ebs.csi.aws.com pv.kubernetes.io/provisioned-by: kubernetes.io/aws-ebs ... ... spec: awsElasticBlockStore: fsType: ext4 volumeID: vol-0296e8e6fa4b27670 claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: ebs-demo-claim namespace: default ... persistentVolumeReclaimPolicy: Delete storageClassName: gp2 volumeMode: Filesystem status: phase: Bound ... -
Consulta los detalles de Amazon EBS. Ejecuta el siguiente comando:
aws ec2 describe-volumes --volume-ids vol-0296e8e6fa4b27670Resultado de ejemplo:
{ "Volumes": [ { "AvailabilityZone": "us-east-1a", "Size": 4, "State": "in-use", "VolumeId": "vol-0296e8e6fa4b27670", "Iops": 100, "VolumeType": "gp2" ... } ] } -
Agrega la anotación de tipo gp3. Ejecuta el siguiente comando:
kubectl annotate pvc ebs-demo-claim ebs.csi.aws.com/volumeType="gp3"Resultado de ejemplo:
persistentvolumeclaim/ebs-demo-claim annotated -
Verifica las anotaciones. Ejecuta los siguientes comandos:
kubectl get pvc ebs-demo-claim -o yamlResultado de ejemplo:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: ebs.csi.aws.com/volumeType: gp3 ... ... name: ebs-demo-claim namespace: defaultkubectl get pv pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 -o yamlResultado de ejemplo:
apiVersion: v1 kind: PersistentVolume metadata: annotations: ebs.csi.aws.com/volumeType: gp3 ... spec: awsElasticBlockStore: fsType: ext4 volumeID: vol-0296e8e6fa4b27670 claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: ebs-demo-claim namespace: default ... -
Supervisa la modificación. Ejecuta el siguiente comando:
kubectl describe pvc ebs-demo-claimResultado de ejemplo:
Name: ebs-demo-claim ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- ... Normal ProvisioningSucceeded 5m20s ebs.csi.aws.com_ebs-csi-controller-676f998966-bh79n_ec5572b3-c1ec-4b3a-838a-d4b21b8c668f Successfully provisioned volume pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 Normal VolumeModificationStarted 64s volume-modifier-for-k8s-ebs.csi.aws.com External modifier is modifying volume pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 Normal VolumeModificationSuccessful 57s volume-modifier-for-k8s-ebs.csi.aws.com -
Confirma que el tipo de volumen ha cambiado a gp3. Ejecuta el siguiente comando:
aws ec2 describe-volumes --volume-ids vol-0296e8e6fa4b27670Resultado de ejemplo:
{ "Volumes": [ { "AvailabilityZone": "us-east-1a", "Size": 4, "State": "in-use", "VolumeId": "vol-0296e8e6fa4b27670", "Iops": 3000, "VolumeType": "gp3", "Throughput": 125 ... } ] }
Uso de instantáneas de volúmenes para migrar volúmenes
El controlador de CSI de Amazon EBS ofrece una característica de instantáneas de volumen de CSI. Puedes usar instantáneas para migrar volúmenes persistentes de la clase de almacenamiento gp2 en árbol a la clase de almacenamiento gp3 de CSI de Amazon EBS. Para obtener más información, consulta Volume snapshots (Instantáneas de volumen) en el sitio web de GitHub.
Para usar instantáneas de volumen, sigue estos pasos:
- Instala el controlador de CSI de Amazon EBS.
- Instala los objetos VolumeSnapshotClass, VolumeSnapshotContent y VolumeSnapshot. Para obtener más información, consulta snapshotclass.yaml, volume-snapshot-content.yaml y snapshot.yaml en el sitio web de GitHub.
- Usa los objetos para crear un nuevo volumen persistente de tipo gp3 a partir de la instantánea. Para obtener más información, consulta Migrating Amazon EKS clusters from gp2 to gp3 EBS volumes (Migración de clústeres de Amazon EKS de volúmenes de EBS gp2 a gp3).
Información relacionada
Simplifying Amazon EBS volume migration and modification on Kubernetes using the EBS CSI Driver (Simplificación de la modificación y migración de volúmenes de Amazon EBS en Kubernetes mediante el controlador de CSI de EBS)
- Temas
- StorageContainers
- Idioma
- Español

Contenido relevante
preguntada hace un año
preguntada hace 2 meses
preguntada hace 2 años
preguntada hace un año
OFICIAL DE AWSActualizada hace 7 meses