No Google Kubernetes Engine (GKE) versão 1.24 ou posterior, é possível usar o recurso de expansão de volume do Kubernetes para alterar a capacidade de um volume permanente após a criação.
A expansão de volume tem os seguintes pré-requisitos:
Se o volume que você quer redimensionar é gerenciado por um driver CSI, siga estas instruções:
Verifique se a versão do Cluster do GKE é a 1.16 ou uma mais recente.
Se o cluster tiver pools de nós do Windows, verifique se a versão do cluster do GKE é 1.18 ou superior.
Se você estiver usando o driver CSI do GKE Filestore gerenciado, a versão do cluster precisará ser de 1.21 ou superior.
Confira a documentação do fornecedor de armazenamento para verificar se o driver CSI é compatível com a expansão de volume. O driver CSI do Persistent Disk do Compute Engine e o driver CSI do Filestore são compatíveis com a expansão de volume.
Se o volume que você quer redimensionar é gerenciado por um plug-in de volume na árvore, siga estas instruções:
Verifique se a versão do Cluster do GKE é a 1.11 ou uma mais recente. Embora
as versões 1.11-1.14 do Cluster do GKE sejam compatíveis com a expansão de volumes
gerenciados por plug-ins em árvore, é necessário que todos os pods que usam o volume sejam
encerrados e recriados para concluir a expansão.
Confira a documentação do fornecedor de armazenamento para verificar se o plug-in de volume em árvore é compatível com a expansão de volume, como é o caso do plug-in em árvore do Persistent Disk do Compute Engine.
Quando a capacidade de um PersistentVolume é modificada diretamente, isso pode fazer os sistemas de arquivos do contêiner ficarem incorretos. Para corrigir esses problemas, consulte Resolver problemas em alterações de expansão de volume.
Como gerenciar expansões de volume em StatefulSets
Se você precisar aumentar o tamanho dos volumes usados por pods em um
StatefulSet
no Kubernetes, ajuste o campo spec.resources.requests.storage
dos PersistentVolumeClaims (PVCs) associados com os pods. A tentativa de
modificar o campo volumeClaimTemplates diretamente no objeto StatefulSet
causará um erro.
Além disso, se você aumentar a contagem de réplicas do StatefulSet, ele ainda criará PVCs do tamanho original. Para alterar permanentemente o tamanho dos volumes provisionados para os pods gerenciados pelo StatefulSet, é necessário excluir e recriar o objeto StatefulSet com o tamanho atualizado especificado no campo volumeClaimTemplates.
Esse processo resultará na exclusão dos pods antigos
e dos PVCs correspondentes. Dependendo do ReclaimPolicy,
o armazenamento subjacente também pode ser excluído.
Execute as etapas a seguir para manter os pods originais em execução enquanto ajusta o StatefulSet para provisionar réplicas futuras com o novo tamanho do volume.
Remova o objeto StatefulSet do cluster, mantendo os pods em execução como independentes:
kubectldeletestsstatefulset-name--cascade=orphan
Edite o novo tamanho do armazenamento do volume no arquivo sts-backup.yaml salvo localmente, especificamente o valor de spec.volumeClaimTemplates.spec.resources.requests.storage.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2024-11-22 UTC."],[],[],null,["# Using volume expansion\n\n[Autopilot](/kubernetes-engine/docs/concepts/autopilot-overview) [Standard](/kubernetes-engine/docs/concepts/choose-cluster-mode)\n\n*** ** * ** ***\n\nIn Google Kubernetes Engine (GKE) version 1.24 or later, you can use the Kubernetes\nvolume expansion feature to change a persistent volume's capacity after\nits creation.\n\nFor more information on volume expansion, see the open source\n[Kubernetes documentation](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims).\n\nPrerequisites\n-------------\n\nVolume expansion has the following prerequisites:\n\n- If the volume you want to resize is managed by a CSI Driver:\n - Ensure the GKE cluster version is 1.16 or later. If the cluster has Windows node pools, ensure the GKE cluster version is 1.18 or later. If you are using the managed [GKE Filestore CSI driver](/kubernetes-engine/docs/how-to/persistent-volumes/filestore-csi-driver), the cluster version must be 1.21 or later.\n - Check your storage vendor's documentation to verify your CSI driver supports volume expansion. The Compute Engine Persistent Disk CSI driver and the Filestore CSI driver support volume expansion.\n- If the volume you want to resize is managed by an in-tree volume plugin:\n - Ensure the GKE cluster version is 1.11 or greater. While GKE cluster versions 1.11-1.14 support expansion of volumes managed by in-tree plugins, they require all Pods using the volume to be terminated and recreated to complete volume expansion.\n - Check your storage vendor's documentation to verify your in-tree volume plugin supports volume expansion (the Compute Engine Persistent Disk in-tree plugin does).\n- You can't use volume expansion when using [`ReadOnlyMany` access mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes).\n\nUsing volume expansion\n----------------------\n\n| **Note:** To avoid errors using volume expansion, ensure that you complete the steps in this section in the right sequence.\n\nTo use volume expansion, perform the following tasks:\n\n1. Add `allowVolumeExpansion: true` to your StorageClass, if your StorageClass\n doesn't already have the field. For example:\n\n apiVersion: storage.k8s.io/v1\n kind: StorageClass\n metadata:\n name: standard\n provisioner: my.driver\n ...\n allowVolumeExpansion: true\n\n2. Request a change in volume capacity by editing your PersistentVolumeClaim's\n `spec.resources.requests.storage` field.\n\n kubectl edit pvc \u003cvar translate=\"no\"\u003epvc-name\u003c/var\u003e\n\n For example, you could change the\n following PVC from having a 30 gibibyte (GiB) disk to having a 40 GiB disk.\n\n Before editing: \n\n # pvc-demo.yaml\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: pvc-demo\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 30Gi\n\n After editing: \n\n # pvc-demo.yaml\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: pvc-demo\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 40Gi\n\n3. Verify the change by viewing PVC. To view your PVC, run the following command:\n\n kubectl get pvc \u003cvar translate=\"no\"\u003epvc-name\u003c/var\u003e -o yaml\n\n Eventually, you should see the new volume in the `status.capacity` field.\n For example: \n\n ...\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 40Gi\n storageClassName: standard\n volumeMode: Filesystem\n volumeName: pvc-078b7484-cc8d-4077-9bcb-2c17d8d4550c\n status:\n accessModes:\n - ReadWriteOnce\n capacity:\n storage: 40Gi\n ...\n\n| **Note:** Don't edit the capacity of the PersistentVolume object directly. If you edit the capacity of a PersistentVolume, and then change the size of the corresponding PersistentVolumeClaim to the same value, volume expansion won't happen. Kubernetes will assume that the backing volume was manually resized, and that no expansion is required.\n\nIf the capacity of a PersistentVolume is modified directly, this could lead the\ncontainer file system to be incorrect. To fix these issues, see\n[troubleshoot volume expansion changes](/kubernetes-engine/docs/troubleshooting/troubleshooting-gke-storage#volume_expansion_changes_not_reflecting_in_the_container_filesystem).\n\nManaging volume expansions in StatefulSets\n------------------------------------------\n\nIf you need to increase the size of volumes used by Pods within a\n[StatefulSet](https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#creating-a-statefulset)\nin Kubernetes, you should adjust the `spec.resources.requests.storage` field\nof the PersistentVolumeClaims (PVCs) associated with the Pods. Attempting to\nmodify the `volumeClaimTemplates` field directly in the StatefulSet\nobject will cause an error.\n\nAdditionally, if you increase the replica count of the StatefulSet,\nit will still create PVCs of the original size. To permanently change the\nsize of the volumes provisioned for the Pods managed by the StatefulSet,\nyou must delete and recreate the StatefulSet object with the updated size\nthat's specified in the `volumeClaimTemplates` field.\n\nYou can perform the following steps in order to keep the original Pods up and\nrunning while adjusting the StatefulSet to provision future replicas with the\nnew volume size.\n\n1. Save the existing StatefulSet to a file:\n\n kubectl get StatefulSet \u003cvar translate=\"no\"\u003estatefulset-name\u003c/var\u003e -o yaml \u003e sts-backup.yaml\n\n2. For each PersistentVolumeClaim in the StatefulSet, open the\n `PersistentVolumeClaim` object in a text editor:\n\n kubectl edit pvc \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e\n\n3. Update the `spec.resources.requests.storage` field to the new volume size,\n like in the following example:\n\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n # lines omitted for clarity\n spec:\n resources:\n requests:\n storage: 14Gi\n # lines omitted for clarity\n\n For details, see [Expanding Persistent Volumes Claims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims).\n4. Save your edits and close the text editor. Wait for Kubernetes to update the\n PersistentVolumeClaim with your changes.\n\n5. Remove the StatefulSet object from the cluster while keeping the Pods\n running as standalone Pods:\n\n kubectl delete sts \u003cvar translate=\"no\"\u003estatefulset-name\u003c/var\u003e --cascade=orphan\n\n6. Edit the new volume storage size in the locally saved `sts-backup.yaml`\n file, specifically the value of `spec.volumeClaimTemplates.spec.resources.requests.storage`\n\n7. Recreate the StatefulSet back in the cluster:\n\n kubectl apply -f sts-backup.yaml\n\nWhat's next\n-----------\n\n- Learn more about [volumes](https://kubernetes.io/docs/concepts/storage/volumes/).\n- Learn more about [Resizing Persistent Volumes using Kubernetes](https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/)."]]