O plug-in Container Storage Interface (CSI) no ACK permite expandir um volume de Cloud Disk ao modificar uma persistent volume claim (PVC), sem reiniciar ou interromper os pods em execução. Esse recurso requer Kubernetes 1.16 ou superior.
Pré-requisitos
Antes de começar, verifique se:
A StorageClass vinculada à PVC tem
allowVolumeExpansion: true. As StorageClasses fornecidas pelo ACK já trazem essa configuração por padrão. Em StorageClasses personalizadas, defina-a manualmente. Não é possível alterar as propriedades de uma StorageClass após a criação; crie uma nova se necessário.O pod que usa o disco está no status Running.
O disco não é básico. Discos básicos não aceitam expansão online.
O cluster roda Kubernetes 1.16 ou superior. Para atualizar, consulte Upgrade clusters.
O disco aceita redimensionamento. Consulte ResizeDisk para visualizar os tipos de disco compatíveis.
Crie um snapshot antes de redimensionar para fazer backup dos dados. Exclua o snapshot após concluir a expansão para evitar cobranças desnecessárias. Consulte Use disk snapshots.
Apenas para clusters dedicados do ACK: Conceda a permissão ResizeDisk à função RAM do cluster. Clusters gerenciados pelo ACK já têm essa permissão.
Faça login no ACK console e clique em Clusters.
Clique no nome do cluster e, depois, em Cluster Information no painel à esquerda.
Na aba Basic Information, localize Master RAM Role na seção Cluster Resources e clique no link.
Na página Roles do console RAM, adicione a permissão
ResizeDisk. Consulte Modify the document and description of a custom policy.
Veja abaixo um exemplo de política de permissões com a ação ResizeDisk:
"Action": [
"ecs:AttachDisk",
"ecs:DetachDisk",
"ecs:DescribeDisks",
"ecs:CreateDisk",
"ecs:CreateSnapshot",
"ecs:DeleteDisk",
"ecs:ResizeDisk",
"ecs:CreateNetworkInterface",
"ecs:DescribeNetworkInterfaces",
"ecs:AttachNetworkInterface",
"ecs:DetachNetworkInterface",
"ecs:DeleteNetworkInterface",
"ecs:DescribeInstanceAttribute",
"ecs:AssignPrivateIpAddresses",
"ecs:UnassignPrivateIpAddresses",
"ecs:DescribeInstances"
]
Expandir um volume de disco usando kubectl
O exemplo abaixo usa um volume de disco criado em Create a dynamically provisioned disk volume. Modificar a PVC aciona o plug-in CSI para redimensionar o disco subjacente e expandir o sistema de arquivos online, mantendo o pod em execução durante todo o processo.
Conecte-se ao cluster. Consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster ou Use kubectl on Workbench or Cloud Shell to connect to ACK clusters.
-
Verifique se o pod está no status Running.
kubectl get pod -l app=nginxSaída esperada:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 23h -
Verifique o uso atual do disco e a PVC.
ImportanteEm volumes provisionados estaticamente, garanta que
storageClassNamena PVC não esteja em branco e que exista uma StorageClass com esse nome no cluster. Se não houver StorageClass correspondente, crie uma com os atributos do disco existente e definaallowVolumeExpansion: true.kubectl exec disk-test-0 -- df -h /dataSaída esperada:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /datakubectl get pvcSaída esperada (a PVC
disk-pvcestá vinculada com capacidade de 20 GiB):NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 20Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23h -
Confirme se a StorageClass tem
allowVolumeExpansion: true.kubectl get sc alicloud-disk-wait-for-first-consumer -o yamlSaída esperada:
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: "2025-01-21T08:48:26Z" name: alicloud-disk-wait-for-first-consumer resourceVersion: "59936" uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: cloud_auto,cloud_essd,cloud_ssd provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer -
Aplique um patch na PVC para solicitar 30 GiB.
kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}' -
Aguarde um minuto e verifique a nova capacidade.
kubectl get pvcSaída esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 30Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23hkubectl exec disk-test-0 -- df -h /dataSaída esperada:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 30G 24K 30G 1% /data
Expandir um volume de disco usando o ACK console
O ACK console aceita apenas volumes de disco provisionados dinamicamente. Para volumes provisionados estaticamente, use kubectl.
Faça login no ACK console e clique em Clusters.
Clique no nome do cluster para acessar a página de gerenciamento.
-
Verifique o status do pod e localize a PVC.
No painel de navegação à esquerda, escolha Workloads > StatefulSets.
Clique no nome da aplicação. Na aba Pods, confirme se o pod está no status Running.
Clique no nome do pod. Na aba Volumes, anote a PVC usada pelo pod.
-
Confirme se a expansão está habilitada na StorageClass.
No painel de navegação à esquerda, escolha Volumes > Storage Classes.
Localize a StorageClass usada pelo volume de disco e clique em View in YAML.
-
Confirme a presença de
allowVolumeExpansion: true.Exemplo de saída:
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: '2025-01-21T08:48:26Z' managedFields: - apiVersion: storage.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: 'f:allowVolumeExpansion': {} 'f:parameters': .: {} 'f:type': {} 'f:provisioner': {} 'f:reclaimPolicy': {} 'f:volumeBindingMode': {} manager: okhttp operation: Update time: '2025-01-21T08:48:26Z' name: alicloud-disk-wait-for-first-consumer resourceVersion: '59936' uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: 'cloud_auto,cloud_essd,cloud_ssd' provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer
-
Expanda a PVC.
No painel de navegação à esquerda, escolha Volumes > Persistent Volume Claims.
Localize a PVC e clique em Expand.
-
Insira a nova capacidade, selecione I understand and agree to the preceding operations. e clique em OK.
Intervalo de expansão: mínimo de 21 GiB, máximo de 32.768 GiB. Valores decimais não são aceitos.
NotaSe nenhum pod referenciar a PVC, a expansão permanecerá no status Expanding.
Aguarde a conclusão da expansão e verifique se a PVC exibe a nova capacidade.
Próximos passos
Para expandir automaticamente um volume de disco quando o uso ultrapassar um limiar, consulte Automatically expand a disk volume (public preview).
Para erros e soluções relacionados a volumes de disco, consulte FAQ about disk volumes.