Di Google Kubernetes Engine (GKE) versi 1.24 atau yang lebih baru, Anda dapat menggunakan fitur ekspansi volume Kubernetes untuk mengubah kapasitas volume persisten setelah dibuat.
Untuk mengetahui informasi selengkapnya tentang ekspansi volume, lihat
dokumentasi Kubernetes open source.
Prasyarat
Perluasan volume memiliki prasyarat berikut:
Jika volume yang ingin diubah ukurannya dikelola oleh Driver CSI:
Pastikan cluster GKE versi 1.16 atau yang lebih baru.
Jika cluster memiliki node pool Windows, pastikan versi cluster GKE adalah 1.18 atau yang lebih baru.
Jika Anda menggunakan driver CSI Filestore terkelola, versi cluster harus 1.21 atau yang lebih baru.
Periksa dokumentasi vendor penyimpanan untuk memastikan driver CSI Anda mendukung
ekspansi volume. Driver CSI Persistent Disk Compute Engine dan driver CSI Filestore mendukung ekspansi volume.
Jika volume yang ingin diubah ukurannya dikelola oleh plugin volume dalam hierarki:
Pastikan cluster GKE versi 1.11 atau yang lebih baru. Meskipun
cluster GKE versi 1.11-1.14 mendukung ekspansi volume
yang dikelola oleh plugin dalam hierarki, semua Pod yang menggunakan volume harus
dihentikan dan dibuat ulang untuk menyelesaikan ekspansi volume.
Periksa dokumentasi vendor penyimpanan untuk memastikan bahwa plugin volume dalam hierarki mendukung ekspansi volume (plugin dalam hierarki Persistent Disk Compute Engine mendukungnya).
Jika kapasitas PersistentVolume diubah secara langsung, hal ini dapat menyebabkan
sistem file container menjadi salah. Untuk memperbaiki masalah ini, lihat
memecahkan masalah perubahan ekspansi volume.
Mengelola perluasan volume di StatefulSet
Jika Anda perlu menambah ukuran volume yang digunakan oleh Pod dalam
StatefulSet
di Kubernetes, Anda harus menyesuaikan kolom spec.resources.requests.storage
PersistentVolumeClaims (PVC) yang terkait dengan Pod. Mencoba mengubah kolom volumeClaimTemplates secara langsung di objek StatefulSet akan menyebabkan error.
Selain itu, jika Anda meningkatkan jumlah replika StatefulSet, PVC dengan ukuran asli akan tetap dibuat. Untuk mengubah ukuran volume yang disediakan untuk Pod yang dikelola oleh StatefulSet secara permanen, Anda harus menghapus dan membuat ulang objek StatefulSet dengan ukuran yang diperbarui yang ditentukan dalam kolom volumeClaimTemplates.
Anda dapat melakukan langkah-langkah berikut agar Pod asli tetap aktif dan berjalan sambil menyesuaikan StatefulSet untuk menyediakan replika mendatang dengan ukuran volume baru.
Simpan hasil edit Anda dan tutup editor teks. Tunggu hingga Kubernetes memperbarui PersistentVolumeClaim dengan perubahan Anda.
Hapus objek StatefulSet dari cluster sambil mempertahankan Pod
agar tetap berjalan sebagai Pod mandiri:
kubectldeletestsstatefulset-name--cascade=orphan
Edit ukuran penyimpanan volume baru dalam file sts-backup.yaml
yang disimpan secara lokal, khususnya nilai spec.volumeClaimTemplates.spec.resources.requests.storage
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-31 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/)."]]