GKE di AWS otomatis men-deploy Driver Antarmuka Penyimpanan Container (CSI) untuk Amazon Elastic Block Store (EBS) guna menyediakan dan mengelola volume Amazon EBS di cluster Anda.
Versi Driver CSI EBS GKE on AWS terikat dengan versi Kubernetes GKE on AWS. Versi driver biasanya adalah versi terbaru yang tersedia saat versi GKE dirilis. Saat cluster diupgrade, driver akan diupdate secara otomatis.
Cara menggunakan StorageClass default
Membuat PersistentVolumeClaim tanpa menetapkan kolom spec.storageClassName
akan menyediakan volume gp2
menggunakan StorageClass Driver CSI EBS GKE di AWS default.
YAML berikut membuat PersistentVolumeClaim (PVC) bernama mypvc
dengan ukuran
30 gibibyte.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
Cara menggunakan StorageClass bawaan yang berbeda
Driver CSI EBS GKE di AWS juga menyertakan StorageClass premium-rwo
, yang menyediakan volume io1
dengan throughput yang lebih tinggi.
Anda dapat menggunakannya dengan menentukannya di spec.storageclassName
PVC.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
storageclassName: premium-rwo
Cara menggunakan StorageClass kustom
Anda dapat membuat StorageClass tambahan untuk volume EBS atau menggunakan Driver Container Storage Interface (CSI).
Pilih apakah Anda menggunakan volume EBS atau driver CSI tertentu.
Volume EBS
Anda dapat membuat StorageClass kustom sendiri yang menentukan jenis volume EBS, jenis sistem file, dan parameter lainnya. Anda dapat menemukan parameter StorageClass tambahan di halaman GitHub GKE di AWS EBS CSI Driver .
Untuk mengonfigurasi StorageClass kustom, salin manifes YAML berikut ke dalam file bernama
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer
Ganti
CLASS_NAME
dengan nama StorageClass baru Anda.Misalnya, YAML berikut membuat StorageClass baru yang menyediakan volume EBS HDD yang Dioptimalkan untuk Throughput yang diformat dengan sistem file XFS.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-class provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fsType: xfs type: st1
Driver CSI
Anda dapat menentukan driver CSI yang berbeda di kolom
provisioner
.Untuk membuat StorageClass dengan driver CSI lain, Anda dapat menggunakan contoh YAML di bawah.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Ganti kode berikut:
CSI_DRIVER_NAME
dengan nama driver CSI—misalnya,csi.example.com
CLASS_NAME
dengan nama StorageClass—misalnya,my-custom-class
Konfigurasi sub-kolom di bagian
parameters
sesuai dengan driver CSI Anda.Terapkan YAML ke cluster Anda.
kubectl apply -f my-custom-class.yaml
Cara membuat PersistentVolumeClaim dengan StorageClass kustom
Setelah StorageClass kustom dibuat, Anda dapat menentukannya di PVC. Contoh di bawah membuat PVC bernama
my-pvc
yang mereferensikan StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Cara menetapkan StorageClass default
GKE di AWS menggunakan StorageClass default yang disebut
standard-rwo
yang menyediakan
volume EBS gp2. Anda dapat mengubah default ke StorageClass lain.
Untuk mengubah StorageClass default:
Perbarui anotasi
is-default-class
untuk StorageClassstandard-rwo
dengankubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Buat StorageClass baru yang memiliki anotasi
storageclass.kubernetes.io/is-default-class: true
.Contoh StorageClass berikut menggunakan driver
ebs.csi.aws.com
. Untuk menginstal driver penyimpanan lain, lihat bagian Menginstal driver CSI.Salin YAML berikut ke dalam file bernama
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME annotations: storageclass.kubernetes.io/is-default-class: true provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: EBS_VOLUME_TYPE
Ganti kode berikut:
EBS_VOLUME_TYPE
: jenis volume EBS AWS yang dibuat oleh StorageClass.CLASS_NAME
dengan nama StorageClass baru Anda
Misalnya, YAML berikut membuat StorageClass default baru yang menyediakan volume EBS HDD yang Dioptimalkan untuk Throughput yang diformat dengan sistem file XFS.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-default-class annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fsType: xfs type: st1
Terapkan class kustom baru ke cluster Anda.
kubectl apply -f my-custom-class.yaml
Setelah menerapkan manifes ini, GKE di AWS akan menggunakan
my-custom-default-class
StorageClass untuk permintaan penyimpanan baru.
Mereferensikan StorageClass dalam StatefulSet
Untuk menggunakan StorageClass baru, Anda harus mereferensikannya di volumeClaimTemplates
StatefulSet.
Saat Anda mereferensikan StorageClass dalam spesifikasi volumeClaimTemplates
StatefulSet, Kubernetes akan menyediakan penyimpanan yang stabil menggunakan PersistentVolumes (PV).
Kubernetes memanggil penyedia yang ditentukan dalam StorageClass untuk membuat volume penyimpanan baru. Setelah volume disediakan, Kubernetes akan otomatis membuat PV.
StatefulSet berikut mereferensikan StorageClass my-custom-class
dan menyediakan volume 1 gibibyte:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
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: my-custom-class # This field references the existing StorageClass
Langkah berikutnya
Pelajari Volume persisten di GKE.
Instal driver Penyimpanan di cluster GKE di AWS Anda.
Deploy workload pertama Anda dengan Panduan Memulai.