Google Kubernetes Engine (GKE) menyediakan cara mudah bagi Anda untuk men-deploy dan mengelola Driver Antarmuka Penyimpanan Container (CSI) persistent disk Compute Engine secara otomatis di cluster. Driver CSI persistent disk Compute Engine selalu diaktifkan di cluster Autopilot dan tidak dapat dinonaktifkan atau diedit. Di cluster Standard, Anda harus mengaktifkan Driver CSI persistent disk Compute Engine.
Versi Driver CSI persistent disk Compute Engine terikat dengan nomor versi GKE. Versi Driver CSI persistent disk Compute Engine biasanya merupakan driver terbaru yang tersedia saat versi GKE dirilis. Driver akan otomatis diupdate saat cluster diupgrade ke GKE patch terbaru.
Manfaat
Penggunaan Driver CSI persistent disk Compute Engine memberikan manfaat berikut:
- Hal ini memungkinkan deployment dan pengelolaan otomatis driver persistent disk tanpa harus menyiapkannya secara manual.
- Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK). Kunci ini digunakan untuk mengenkripsi kunci enkripsi data yang mengenkripsi data Anda. Untuk mempelajari CMEK di GKE lebih lanjut, silakan melihat Menggunakan CMEK.
- Anda dapat menggunakan snapshot volume dengan Driver CSI persistent disk Compute Engine. Snapshot volume memungkinkan Anda membuat salinan volume pada titik waktu tertentu. Anda dapat menggunakan salinan ini untuk mengembalikan volume ke status sebelumnya atau untuk menyediakan volume baru.
- Anda dapat menggunakan cloning volume dengan Driver CSI persistent disk Compute Engine di cluster yang menjalankan GKE versi 1.22 dan yang lebih baru. Cloning volume memungkinkan Anda membuat duplikat volume pada waktu tertentu, yang disediakan dengan semua data dari volume sumber.
- Perbaikan bug dan update fitur diluncurkan secara terpisah dari rilis Kubernetes minor. Jadwal rilis ini biasanya menghasilkan frekuensi rilis yang lebih cepat.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Persyaratan
Untuk menggunakan Driver CSI persistent disk Compute Engine, cluster Anda harus menggunakan versi berikut:
- Cluster Linux: GKE versi 1.14 atau yang lebih baru.
- Cluster Windows: GKE versi 1.18 atau yang lebih baru.
Pada versi 1.22 dan yang lebih baru, Migrasi CSI diaktifkan. Volume saat ini yang menggunakan penyedia gce-pd
akan dimigrasikan untuk
berkomunikasi melalui driver CSI. Tidak ada perubahan yang diperlukan pada
StorageClass apa pun. Penyedia gce-pd
tetap tidak mendukung fitur seperti
CMEK atau snapshot volume. Anda harus menggunakan penyedia pd.csi.storage.gke.io
di StorageClass untuk mengaktifkan fitur ini.
Untuk menggunakan Driver CSI persistent disk Compute Engine dengan Workload Identity Federation for GKE, cluster Standar Anda harus menggunakan versi berikut:
- Cluster Linux: GKE versi 1.16 atau yang lebih baru.
- Cluster Windows: GKE versi 1.20.8-gke.900 atau yang lebih baru.
Mengaktifkan Driver CSI persistent disk Compute Engine pada cluster baru
Untuk membuat cluster Standard dengan versi yang tidak mengaktifkan Driver CSI persistent disk Compute Engine secara otomatis, Anda dapat menggunakan Google Cloud CLI atau Konsol Google Cloud.
Untuk mengaktifkan driver pada pembuatan cluster, selesaikan langkah-langkah berikut:
gcloud
gcloud container clusters create CLUSTER-NAME \
--addons=GcePersistentDiskCsiDriver \
--cluster-version=VERSION
Ganti kode berikut:
CLUSTER-NAME
: nama cluster Anda.VERSION
: nomor versi GKE. Anda harus memilih versi 1.14 atau yang lebih tinggi untuk menggunakan fitur ini.
Untuk mengetahui daftar lengkap flag, silakan melihat
dokumentasi
gcloud container clusters create
.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
Di bagian Standard, klik Konfigurasikan.
Mengonfigurasikan cluster sesuai keinginan.
Dari panel navigasi, pada bagian Cluster, klik Fitur.
Centang kotak Aktifkan Driver CSI persistent disk Compute Engine.
Klik Create.
Setelah mengaktifkan Driver CSI persistent disk Compute Engine, Anda dapat menggunakan driver dalam volume Kubernetes menggunakan nama penyedia dan driver: pd.csi.storage.gke.io
.
Mengaktifkan Driver CSI persistent disk Compute Engine pada cluster yang sudah ada
Untuk mengaktifkan Driver CSI persistent disk Compute Engine di cluster Standard yang sudah ada, gunakan Google Cloud CLI atau Konsol Google Cloud.
Untuk mengaktifkan driver di cluster yang sudah ada, selesaikan langkah-langkah berikut:
gcloud
gcloud container clusters update CLUSTER-NAME \
--update-addons=GcePersistentDiskCsiDriver=ENABLED
Ganti CLUSTER-NAME
dengan nama cluster yang sudah ada.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Di daftar cluster, klik nama cluster yang ingin diubah.
Di bagian Fitur, di samping kolom Driver CSI persistent disk Compute Engine, klik edit Edit driver CSI Compute Engine.
Centang kotak Aktifkan Driver CSI persistent disk Compute Engine.
Klik Simpan Perubahan.
Menonaktifkan Driver CSI persistent disk Compute Engine
Anda dapat menonaktifkan Driver CSI persistent disk Compute Engine untuk cluster Standard menggunakan Google Cloud CLI atau Konsol Google Cloud.
Jika Anda menonaktifkan driver, semua Pod yang saat ini, yang menggunakan PersistentVolume yang dimiliki oleh driver, tidak akan dihentikan. Selain itu, setiap Pod baru yang mencoba menggunakan PersistentVolume tersebut juga tidak dapat dimulai.
Untuk menonaktifkan driver di cluster Standard yang sudah ada, selesaikan langkah-langkah berikut:
gcloud
gcloud container clusters update CLUSTER-NAME \
--update-addons=GcePersistentDiskCsiDriver=DISABLED
Ganti CLUSTER-NAME
dengan nama cluster yang sudah ada.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Di daftar cluster, klik nama cluster yang ingin diubah.
Di bagian Fitur, di samping kolom Driver CSI persistent disk Compute Engine, klik edit Edit driver CSI Compute Engine.
Hapus centang Aktifkan Driver CSI Persistent Disk Compute Engine.
Klik Simpan Perubahan.
Menggunakan Driver CSI persistent disk Compute Engine untuk cluster Linux
Bagian berikut ini menjelaskan proses umum dalam menggunakan volume Kubernetes yang didukung oleh driver CSI di GKE. Bagian ini khusus untuk cluster yang menggunakan Linux.
Membuat StorageClass
Setelah Anda mengaktifkan Driver CSI persistent disk Compute Engine, GKE akan otomatis menginstal StorageClasses berikut:
standard-rwo
, menggunakan persistent disk seimbangpremium-rwo
, menggunakan persistent disk SSD
Untuk cluster Autopilot, StorageClass default-nya adalah standard-rwo
,
yang menggunakan Driver CSI persistent disk Compute Engine. Untuk cluster Standard, StorageClass default menggunakan plugin volume gcePersistentDisk
dalam hierarki Kubernetes.
Anda dapat menemukan nama StorageClasses yang terinstal dengan menjalankan perintah berikut:
kubectl get sc
Anda juga dapat menginstal StorageClass lain yang menggunakan Driver CSI persistent disk Compute Engine dengan menambahkan pd.csi.storage.gke.io
di kolom penyedia.
Misalnya, Anda dapat membuat
StorageClass menggunakan file berikut bernama pd-example-class.yaml
:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: pd-balanced
Anda dapat menentukan jenis persistent disk berikut dalam parameter type
:
pd-balanced
pd-ssd
pd-standard
pd-extreme
(didukung di GKE versi 1.26 dan yang lebih baru)
Jika menggunakan pd-standard
atau pd-extreme
, silakan melihat Jenis mesin yang tidak didukung untuk batasan penggunaan tambahan.
Saat menggunakan opsi pd-extreme
, Anda juga harus menambahkan kolom provisioned-iops-on-create
ke
manifes. Kolom ini harus ditetapkan ke nilai yang sama dengan nilai IOPS yang disediakan yang Anda tentukan saat membuat persistent disk.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-extreme-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: pd-extreme
provisioned-iops-on-create: '10000'
Setelah membuat file pd-example-class.yaml
, jalankan perintah berikut:
kubectl create -f pd-example-class.yaml
Membuat PersistentVolumeClaim
Anda dapat membuat PersistentVolumeClaim yang mereferensikan StorageClass CSI Driver CSI persistent disk Compute Engine.
File berikut, yang bernama pvc-example.yaml
, menggunakan kelas penyimpanan bawaan standard-rwo
:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: podpvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: standard-rwo
resources:
requests:
storage: 6Gi
Setelah membuat manifes PersistentVolumeClaim, jalankan perintah berikut:
kubectl create -f pvc-example.yaml
Di StorageClass (standard-rwo
) bawaan, volumeBindingMode
disetel ke WaitForFirstConsumer
. Jika volumeBindingMode
ditetapkan ke WaitForFirstConsumer
, PersistentVolume tidak akan disediakan hingga Pod yang mereferensikan PersistentVolumeClaim dijadwalkan. Jika volumeBindingMode
di StorageClass ditetapkan ke Immediate
(atau dihilangkan), PersistentVolume yang didukung persistent disk akan disediakan setelah PersistentVolumeClaim dibuat.
Membuat Pod yang memakai volume
Saat menggunakan Pod dengan PersistentVolume, sebaiknya gunakan pengontrol workload (seperti Deployment atau StatefulSet). Meskipun biasanya Anda tidak akan menggunakan Pod mandiri, contoh berikut menggunakannya untuk memudahkan.
Contoh berikut menggunakan volume yang Anda buat di bagian sebelumnya:
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- mountPath: /var/lib/www/html
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: podpvc
readOnly: false
Menggunakan Driver CSI persistent disk Compute Engine untuk cluster Windows
Bagian berikut ini menjelaskan proses umum dalam menggunakan volume Kubernetes yang didukung oleh driver CSI di GKE. Bagian ini khusus untuk cluster yang menggunakan Windows.
Pastikan bahwa:
- Versi cluster adalah 1.19.7-gke.2000, 1.20.2-gke.2000, atau yang lebih baru.
- Versi node adalah 1.18.12-gke.1203, 1.19.6-gke.800, atau yang lebih baru.
Membuat StorageClass
Proses pembuatan StorageClass untuk Windows sangat mirip dengan Linux. Perlu diketahui bahwa StorageClass yang diinstal secara default tidak akan berfungsi untuk Windows karena jenis sistem filenya berbeda. Driver CSI persistent disk Compute Engine untuk Windows mewajibkan NTFS
sebagai jenis sistem file.
Misalnya, Anda dapat membuat StorageClass menggunakan file berikut bernama pd-
windows-class.yaml
. Pastikan untuk menambahkan csi.storage.k8s.io/fstype: NTFS
ke daftar parameter:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-sc-windows
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: pd-balanced
csi.storage.k8s.io/fstype: NTFS
Membuat PersistentVolumeClaim
Setelah membuat StorageClass untuk Windows, sekarang Anda dapat membuat PersistentVolumeClaim yang merujuk StorageClass tersebut:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: podpvc-windows
spec:
accessModes:
- ReadWriteOnce
storageClassName: pd-sc-windows
resources:
requests:
storage: 6Gi
Membuat Pod yang memakai volume
Contoh berikut memakai volume yang Anda buat di tugas sebelumnya:
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
nodeSelector:
kubernetes.io/os: windows
containers:
- name: iis-server
image: mcr.microsoft.com/windows/servercore/iis
ports:
- containerPort: 80
volumeMounts:
- mountPath: /var/lib/www/html
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: podpvc-windows
readOnly: false
Menggunakan Driver CSI persistent disk Compute Engine dengan jenis sistem file non-default
Jenis sistem file default untuk persistent disk Compute Engine di GKE adalah ext4
. Anda juga dapat menggunakan jenis penyimpanan xfs
selama image node Anda
mendukungnya. Lihat Dukungan driver penyimpanan
untuk mengetahui daftar driver yang didukung menurut image node.
Contoh berikut menunjukkan cara menggunakan xfs
sebagai jenis sistem file default,
bukan ext4
dengan Driver CSI persistent disk Compute Engine.
Membuat StorageClass
Simpan manifes berikut sebagai file YAML bernama
pd-xfs-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: xfs-class provisioner: pd.csi.storage.gke.io parameters: type: pd-balanced csi.storage.k8s.io/fstype: xfs volumeBindingMode: WaitForFirstConsumer
Terapkan manifes:
kubectl apply -f pd-xfs-class.yaml
Membuat PersistentVolumeClaim
Simpan manifes berikut sebagai
pd-xfs-pvc.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: xfs-pvc spec: storageClassName: xfs-class accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
Terapkan manifes:
kubectl apply -f pd-xfs-pvc.yaml
Membuat Pod yang memakai volume
Simpan manifes berikut sebagai
pd-xfs-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: pd-xfs-pod spec: containers: - name: cloud-sdk image: google/cloud-sdk:slim args: ["sleep","3600"] volumeMounts: - mountPath: /xfs name: xfs-volume volumes: - name: xfs-volume persistentVolumeClaim: claimName: xfs-pvc
Terapkan manifes:
kubectl apply -f pd-xfs-pod.yaml
Memastikan bahwa volume telah terpasang dengan benar
Buka sesi shell dalam Pod:
kubectl exec -it pd-xfs-pod -- /bin/bash
Cari partisi
xfs
:df -aTh --type=xfs
Output-nya akan mirip dengan berikut ini:
Filesystem Type Size Used Avail Use% Mounted on /dev/sdb xfs 30G 63M 30G 1% /xfs
Melihat log untuk Driver CSI persistent disk Compute Engine
Anda dapat menggunakan Cloud Logging untuk melihat peristiwa yang terkait dengan Driver CSI persistent disk Compute Engine. Log dapat membantu Anda memecahkan masalah.
Untuk mengetahui informasi selengkapnya tentang Cloud Logging, silakan membaca Melihat log GKE Anda.
Untuk melihat log Driver CSI persistent disk Compute Engine, selesaikan langkah-langkah berikut:
Buka halaman Cloud Logging di Konsol Google Cloud.
Jalankan kueri berikut:
resource.type="k8s_container" resource.labels.project_id="PROJECT_ID" resource.labels.location="LOCATION" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.namespace_name="kube-system" resource.labels.container_name="gce-pd-driver"
Ganti kode berikut:
PROJECT_ID
: nama project Anda.LOCATION
: region atau zona Compute Engine.CLUSTER_NAME
: nama cluster Anda.
Masalah umum
Jenis mesin yang tidak didukung
Jika Anda menggunakan kelompok mesin seri C3, jenis persistent disk pd-standard
tidak didukung.
Jika Anda mencoba menjalankan Pod pada mesin, dan Pod menggunakan jenis persistent disk yang tidak didukung, Anda akan melihat pesan peringatan seperti berikut yang dimunculkan di Pod:
AttachVolume.Attach failed for volume "pvc-d7397693-5097-4a70-9df0-b10204611053" : rpc error: code = Internal desc = unknown Attach error: failed when waiting for zonal op: operation operation-1681408439910-5f93b68c8803d-6606e4ed-b96be2e7 failed (UNSUPPORTED_OPERATION): [pd-standard] features are not compatible for creating instance.
Jika cluster Anda memiliki beberapa node pool dengan kelompok mesin yang berbeda, Anda dapat menggunakan
taint node
dan
afinitas node
untuk membatasi tempat workload dapat dijadwalkan. Misalnya, Anda dapat menggunakan pendekatan ini untuk membatasi workload yang menggunakan pd-standard
agar tidak berjalan pada kelompok mesin yang tidak didukung.
Jika menggunakan jenis persistent disk pd-extreme
, Anda harus memastikan bahwa disk terpasang ke instance VM dengan bentuk mesin yang sesuai. Untuk mempelajari lebih lanjut, silakan melihat Dukungan bentuk mesin.
Langkah selanjutnya
- Pelajari cara menggunakan perluasan volume.
- Pelajari cara menggunakan snapshot volume.
- Pelajari cara menggunakan cloning volume.
- Baca selengkapnya tentang driver di GitHub.