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, baca 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 Compute Engine Persistent Disk CSI 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 in-tree Anda mendukung ekspansi volume (plugin Persistent Disk in-tree Compute Engine melakukannya).
Menggunakan ekspansi volume
Untuk menggunakan ekspansi volume, lakukan tugas berikut:
Tambahkan
allowVolumeExpansion: true
ke StorageClass Anda, jika StorageClass Anda belum memiliki kolom tersebut. Contoh:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: my.driver ... allowVolumeExpansion: true
Minta perubahan kapasitas volume dengan mengedit kolom
spec.resources.requests.storage
PersistentVolumeClaim.kubectl edit pvc pvc-name
Misalnya, Anda dapat mengubah PVC berikut dari disk 30 gibibyte (GiB) menjadi disk 40 GiB.
Sebelum mengedit:
# pvc-demo.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-demo spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi
Setelah mengedit:
# pvc-demo.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-demo spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi
Verifikasi perubahan dengan melihat PVC. Untuk melihat PVC Anda, jalankan perintah berikut:
kubectl get pvc pvc-name -o yaml
Pada akhirnya, Anda akan melihat volume baru di kolom
status.capacity
. Contoh:... spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi storageClassName: standard volumeMode: Filesystem volumeName: pvc-078b7484-cc8d-4077-9bcb-2c17d8d4550c status: accessModes: - ReadWriteOnce capacity: storage: 40Gi ...
Jika kapasitas PersistentVolume diubah secara langsung, hal ini dapat menyebabkan sistem file container mengalami kesalahan. Untuk memperbaiki masalah ini, lihat memecahkan masalah perubahan ekspansi volume.
Mengelola perluasan volume di StatefulSets
Jika ingin meningkatkan ukuran volume yang digunakan oleh Pod dalam
StatefulSet
di Kubernetes, Anda harus menyesuaikan kolom spec.resources.requests.storage
dari PersistentVolumeClaims (PVC) yang terkait dengan Pod. Mencoba
mengubah kolom volumeClaimTemplates
secara langsung dalam objek
StatefulSet akan menyebabkan error.
Selain itu, jika Anda meningkatkan jumlah replika StatefulSet,
tersebut akan tetap membuat PVC dengan ukuran aslinya. Untuk mengubah ukuran volume yang disediakan untuk Pod yang dikelola oleh StatefulSet secara permanen, Anda harus menghapus dan membuat ulang objek StatefulSet dengan ukuran terbaru yang ditentukan di kolom volumeClaimTemplates
.
Perlu diingat bahwa proses ini akan mengakibatkan penghapusan Pod lama
dan PVCnya yang sesuai. Bergantung pada ReclaimPolicy
,
penyimpanan dasar mungkin juga dihapus.
Anda dapat melakukan langkah-langkah berikut untuk menjaga Pod asli tetap aktif dan berjalan sambil menyesuaikan StatefulSet untuk menyediakan replika mendatang dengan ukuran volume baru.
Simpan StatefulSet yang ada ke file:
kubectl get StatefulSet statefulset-name -o yaml > sts-backup.yaml
Hapus objek StatefulSet dari cluster dan tetap jalankan Pod sebagai Pod mandiri:
kubectl delete sts statefulset-name --cascade=orphan
Mengedit ukuran penyimpanan volume baru di file
sts-backup.yaml
yang disimpan secara lokal, khususnya nilaispec.volumeClaimTemplates.spec.resources.requests.storage
Buat ulang StatefulSet di cluster:
kubectl apply -f sts-backup.yaml
Langkah selanjutnya
- Pelajari volume lebih lanjut.
- Pelajari lebih lanjut cara Mengubah Ukuran Volume Persisten menggunakan Kubernetes.