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 informasi selengkapnya tentang perluasan 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 Persistent Disk dalam hierarki Compute Engine mendukungnya).
- Anda tidak dapat menggunakan ekspansi volume saat menggunakan
mode akses
ReadOnlyMany
.
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 penampung menjadi salah. Untuk memperbaiki masalah ini, lihat memecahkan masalah perubahan ekspansi volume.
Mengelola perluasan volume di StatefulSet
Jika perlu meningkatkan 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,
StatefulSet tersebut masih akan membuat PVC dengan ukuran asli. 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 di kolom volumeClaimTemplates
. Kecuali jika StatefulSet Anda telah mengaktifkan PVC Auto-Deletion, menghapus StatefulSet hanya akan mengakibatkan penghapusan Pod StatefulSet, dan tidak akan menghapus PVC yang sesuai. Agar
PVC ini mencerminkan ukuran yang diperbarui, Anda juga harus menghapus dan membuat ulang PVC.
Bergantung pada ReclaimPolicy
PVC, penyimpanan yang mendasarinya 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 sambil tetap menjalankan Pod sebagai Pod mandiri:
kubectl delete sts statefulset-name --cascade=orphan
Edit ukuran penyimpanan volume baru dalam 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.