Como faço para migrar um volume do EBS de gp2 para gp3 no Amazon EKS?
Quero migrar meu tipo de volume do Amazon Elastic Block Store (Amazon EBS) do SSD de uso geral (gp2) para o SSD de uso geral (gp3) no Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
É possível usar o driver da Interface de armazenamento de contêiner (Container Storage Interface, CSI) do Amazon EBS para modificar volumes do Amazon EBS com anotações em PersistentVolumeClaims (PVC). Esse atributo está disponível na versão aws-ebs-csi-driver v1.19.0-eksbuild.2 ou posterior. É possível modificar os parâmetros type, iops e throughput no PVC:
Para migrar seu volume do EBS de gp2 para gp3 em seu cluster do Amazon EKS, conclua as seguintes etapas:
- Instale o driver da CSI do Amazon EBS em seu cluster do Amazon EKS.
- Ative o atributo de modificação de volume no driver da CSI do Amazon EBS.
- Altere o tipo de volume do EBS.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Instale o atributo de modificação de volume no driver da CSI do Amazon EBS
O atributo de modificação de volume está disponível na versão 1.19.0 do driver da CSI do Amazon EBS. Ele é usado pelo chart do Helm 2.19.0 ou pelo complemento gerenciado do Amazon EKS v1.19.0-eksbuild.2. Esse atributo é implementado como um sidecar extra chamado volumemodifier. Você deve ativá-lo manualmente no driver da CSI do Amazon EBS. Para obter mais informações, consulte Volume modification (Modificação de volume) no site do GitHub.
Para ativar o atributo de modificação de volume no Amazon EKS, configure um dos seguintes métodos:
- Configuração de complemento autogerenciada com o Helm
- Configuração de complemento gerenciado do Amazon EKS
Configuração de complemento autogerenciada com o Helm
-
Instale o driver autogerenciado da CSI do Amazon EBS por meio do chart do Helm e defina controller.volumeModificationFeature.enabled como verdadeiro.
Exemplo de YAML:cat values.yaml controller: volumeModificationFeature: enabled: true -
Atualize a configuração. Execute o seguinte comando:
helm upgrade aws-ebs-csi-driver --namespace kube-system \ aws-ebs-csi-driver/aws-ebs-csi-driver -f values.yaml
Configuração de complemento gerenciado do Amazon EKS
-
Crie um arquivo de configuração. Execute o seguinte comando:
cat eks-addon-ebs-csi-driver-config.json { "controller": { "volumeModificationFeature": { "enabled": true } } } -
Atualize o complemento do driver da CSI do Amazon EBS com o arquivo de configuração. Execute o seguinte 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}" } ], ... } } -
Verifique se o sidecar extra volumemodifier está ativo. Execute o seguinte comando:
kubectl get pod -n kube-system -l=app=ebs-csi-controllerExemplo de saída:
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 -
Verifique os nomes dos contêineres. Execute o seguinte comando:
kubectl get pod -n kube-system ebs-csi-controller-5f985b94f4-lk7lv -o jsonpath='{.spec.containers[*].name}{"\n"}'Exemplo de saída:
ebs-plugin csi-provisioner csi-attacher csi-snapshotter volumemodifier csi-resizer liveness-probe
Altere o tipo de volume do EBS
-
Analise o status atual do PVC e do PersistentVolume (PV). Execute os seguintes comandos:
kubectl get scExemplo de saída:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 6h23mkubectl get pvc ebs-demo-claimExemplo de saída:
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-51cdf03a9e30Exemplo de saída:
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 -
Veja os detalhes do PV. Execute o seguinte comando:
kubectl get pv pvc-10d1d621-22f4-4fb6-a64a-51cdf03a9e30 -o yamlExemplo de saída:
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 ... -
Confira os detalhes do Amazon EBS. Execute o seguinte comando:
aws ec2 describe-volumes --volume-ids vol-0296e8e6fa4b27670Exemplo de saída:
{ "Volumes": [ { "AvailabilityZone": "us-east-1a", "Size": 4, "State": "in-use", "VolumeId": "vol-0296e8e6fa4b27670", "Iops": 100, "VolumeType": "gp2" ... } ] } -
Adicione a anotação do tipo gp3. Execute o seguinte comando:
kubectl annotate pvc ebs-demo-claim ebs.csi.aws.com/volumeType="gp3"Exemplo de saída:
persistentvolumeclaim/ebs-demo-claim annotated -
Verifique as anotações. Execute os seguintes comandos:
kubectl get pvc ebs-demo-claim -o yamlExemplo de saída:
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 yamlExemplo de saída:
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 ... -
Monitore a modificação. Execute o seguinte comando:
kubectl describe pvc ebs-demo-claimExemplo de saída:
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 -
Confirme se o tipo de volume mudou para gp3. Execute o seguinte comando:
aws ec2 describe-volumes --volume-ids vol-0296e8e6fa4b27670Exemplo de saída:
{ "Volumes": [ { "AvailabilityZone": "us-east-1a", "Size": 4, "State": "in-use", "VolumeId": "vol-0296e8e6fa4b27670", "Iops": 3000, "VolumeType": "gp3", "Throughput": 125 ... } ] }
Use snapshots de volume para migrar volumes
O driver da CSI do Amazon EBS fornece um atributo de snapshots de volume da CSI. É possível usar snapshots para migrar volumes persistentes da StorageClass gp2 incorporada para a StorageClass gp3 da CSI do Amazon EBS. Para obter mais informações, consulte Volume snapshots (Snapshots de volume) no site do GitHub.
Para usar snapshots de volume, conclua as seguintes etapas:
- Instale o driver da CSI do Amazon EBS.
- Instale os objetos VolumeSnapshotClass, VolumeSnapshotContent e VolumeSnapshot. Para obter mais informações, consulte snapshotclass.yaml, volume-snapshot-content.yaml e snapshot.yaml no site do GitHub.
- Use os objetos para criar um novo volume persistente do tipo gp3 a partir do snapshot. Para obter mais informações, consulte Migrating Amazon EKS clusters from gp2 to gp3 EBS volumes (Migrando clusters do Amazon EKS de volumes EBS gp2 para gp3).
Informações relacionadas
Simplifying Amazon EBS volume migration and modification on Kubernetes using the EBS CSI Driver (Simplificando a migração e modificação de volumes do Amazon EBS no Kubernetes usando o driver da CSI do EBS)
- Tópicos
- StorageContainers
- Idioma
- Português

Conteúdo relevante
- feita há 4 meses
- feita há 4 meses
- feita há 2 meses
AWS OFICIALAtualizada há um ano