Halaman ini menjelaskan cara menginstal driver penyimpanan Container Storage Interface (CSI) di cluster Google Kubernetes Engine (GKE) Standard. Halaman ini tidak berlaku untuk cluster GKE Autopilot, yang secara otomatis menggunakan driver CSI persistent disk Compute Engine.
Jika Anda menggunakan driver CSI persistent disk Compute Engine di cluster Standard, sebaiknya deploy driver secara otomatis untuk mengurangi overhead pengelolaan.
Ringkasan
CSI adalah API standar terbuka yang memungkinkan Kubernetes mengekspos sistem penyimpanan arbitrer ke workload dalam container. Volume Kubernetes dikelola oleh driver penyimpanan khusus vendor, yang secara historis telah dikompilasi ke dalam biner Kubernetes. Sebelumnya, Anda tidak dapat menggunakan driver penyimpanan yang tidak disertakan dengan Kubernetes. Menginstal driver CSI akan menambahkan dukungan untuk sistem penyimpanan yang tidak didukung secara native oleh Kubernetes. Selain itu, CSI juga memungkinkan penggunaan fitur penyimpanan modern, seperti snapshot dan pengubahan ukuran.
Menginstal driver CSI vendor
Vendor penyimpanan lain mengembangkan driver CSI mereka sendiri, dan mereka bertanggung jawab untuk memberikan petunjuk penginstalan. Dalam kasus sederhana, penginstalan mungkin hanya melibatkan deployment manifes ke cluster Anda. Lihat daftar driver CSI dalam dokumentasi CSI.
Memverifikasi penginstalan driver
Setelah menginstal driver CSI, Anda dapat memverifikasi penginstalan dengan menjalankan salah satu perintah berikut, bergantung pada versi GKE cluster:
1.14+
kubectl get csinodes \ -o jsonpath='{range .items[*]} {.metadata.name}{": "} {range .spec.drivers[*]} {.name}{"\n"} {end}{end}'
1.13.x
kubectl get nodes \ -o jsonpath='{.items[*].metadata.annotations.csi\.volume\.kubernetes\.io\/nodeid}'
Menggunakan driver CSI
Untuk menggunakan driver CSI:
Buat StorageClass Kubernetes yang mereferensikan driver di kolom
provisioner
-nya, jika StorageClass tidak dibuat untuk Anda sebagai bagian dari penginstalan driver. Beberapa driver CSI men-deploy StorageClass saat Anda menginstalnya.Untuk menyediakan penyimpanan, Anda dapat:
- Mereferensikan StorageClass dalam spesifikasi
volumeClaimTemplates
untuk objek StatefulSet. - Menetapkannya sebagai StorageClass default cluster.
- Mereferensikan StorageClass dalam spesifikasi
Pertimbangan untuk StorageClasses yang didukung oleh driver CSI
Saat Anda membuat StorageClass, pertimbangkan hal berikut:
- Dokumentasi driver CSI harus menyertakan parameter khusus driver yang Anda berikan ke StorageClass, termasuk nama penyedia.
- Anda harus memberi nama StorageClass setelah propertinya, bukan setelah nama driver atau alat tertentu di belakangnya. Penamaan StorageClass setelah propertinya memungkinkan Anda membuat StorageClasses dengan nama yang sama di beberapa cluster dan lingkungan, dan memungkinkan aplikasi Anda mendapatkan penyimpanan dengan properti yang sama di seluruh cluster.
Contoh: Mereferensikan StorageClass dalam StatefulSet
Contoh berikut memodelkan cara menentukan driver CSI di StorageClass, lalu mereferensikan StorageClass dalam workload StatefulSet. Contoh ini mengasumsikan driver telah diinstal ke cluster.
Berikut adalah StorageClass sederhana bernama premium-rwo
yang menggunakan driver CSI fiktif, csi.example.com
, sebagai penyedianya:
# fast-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: premium-rwo
provisioner: csi.example.com # CSI driver
parameters: # You provide vendor-specific parameters to this specification
type: example-parameter # Be sure to follow the vendor's instructions
datastore: my-datastore
reclaimPolicy: Retain
allowVolumeExpansion: true
Anda mereferensikan StorageClass dalam spesifikasi volumeClaimTemplates
StatefulSet.
Saat Anda mereferensikan StorageClass dalam spesifikasi volumeClaimTemplates
StatefulSet, Kubernetes akan menyediakan penyimpanan yang stabil menggunakan PersistentVolumes.
Kubernetes memanggil penyedia yang ditentukan dalam StorageClass untuk membuat volume penyimpanan baru. Dalam hal ini, Kubernetes memanggil penyedia csi.example.com
fiktif, yang memanggil API penyedia untuk membuat volume. Setelah volume disediakan, Kubernetes akan otomatis membuat PersistentVolume untuk mewakili penyimpanan.
Berikut adalah StatefulSet sederhana yang mereferensikan StorageClass:
# statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates: # This is the specification in which you reference the StorageClass
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
storageClassName: premium-rwo # This field references the existing StorageClass
Langkah selanjutnya
- Pelajari lebih lanjut konsep penyimpanan GKE.