GKE di AWS otomatis men-deploy Container Storage Interface (CSI) Amazon Elastic Block Store (EBS) dan Amazon Elastic File Store (EFS).
Versi Driver EBS CSI dan EFS CSI Driver terikat dengan GKE pada versi AWS Kubernetes. Versi driver biasanya adalah versi terbaru yang tersedia saat versi GKE dirilis. Saat cluster diupgrade, driver akan otomatis diupdate.
Menggunakan StorageClass default
Membuat PersistentVolumeClaim tanpa kolom spec.storageClassName
akan menyediakan volume volume SSD Tujuan Umum (gp2) menggunakan GKE default di AWS EBS CSI Driver StorageClass.
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
Menggunakan StorageClass lain yang telah diinstal sebelumnya
GKE pada Driver AWS EBS CSI juga mencakup premium-rwo
StorageClass, yang menyediakan volume SSD IOPS yang disediakan (io1
) dengan throughput yang lebih tinggi.
Anda dapat menggunakannya dengan menentukannya dalam spec.storageClassName
PVC.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
storageClassName: premium-rwo
Menggunakan StorageClass kustom
Jika StorageClass default atau premium-rwo
tidak memenuhi kebutuhan Anda, Anda
dapat membuat StorageClass tambahan untuk volume EBS atau menggunakan
Driver Container Storage Interface (CSI).
Pilih apakah Anda menggunakan volume EBS atau driver CSI lainnya.
Volume EBS
Tab ini menjelaskan cara membuat StorageClass kustom Anda sendiri yang menentukan jenis volume EBS, jenis sistem file, dan parameter lainnya. Anda dapat menemukan parameter StorageClass tambahan di halaman GitHub Driver GKE pada AWS EBS CSI.
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 allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer
Ganti
CLASS_NAME
dengan nama StorageClass baru Anda.Misalnya, YAML berikut membuat StorageClass baru yang menyediakan volume EBS throughput Optimized HDD yang diformat dengan sistem file XFS.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-class provisioner: ebs.csi.aws.com allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fsType: xfs type: st1
EFS StorageClass Kustom
Tab ini menjelaskan cara membuat StorageClass kustom untuk penyedia EFS CSI Driver. Lihat Menggunakan resource EFS untuk mengetahui daftar prasyarat untuk StorageClass ini. Halaman Driver EFS CSI mencantumkan parameter StorageClass tambahan selain parameter yang ada dalam manifes berikut.
Salin manifes YAML berikut ke dalam file bernama
my-custom-class.yaml
.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <var>EFS_STORAGE_CLASS_NAME</var> provisioner: efs.csi.aws.com mountOptions: - tls parameters: provisioningMode: efs-ap fileSystemId: EFS_ID directoryPerms: "700"
Ganti:
- EFS_STORAGE_CLASS_NAME dengan nama
StorageClass
. - EFS_ID dengan ID sistem file EFS Anda - misalnya, fs-12345678a.
Driver CSI
Anda dapat menentukan driver CSI lain di kolom
provisioner
.Untuk membuat StorageClass dengan driver CSI lain, Anda dapat menggunakan contoh YAML di bawah ini.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME allowVolumeExpansion: true 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
Konfigurasikan sub-kolom di bagian
parameters
sesuai dengan driver CSI Anda.- EFS_STORAGE_CLASS_NAME dengan nama
Terapkan YAML ke cluster Anda.
kubectl apply -f my-custom-class.yaml
Membuat PersistentVolumeClaim dengan StorageClass kustom
Setelah StorageClass kustom dibuat, Anda dapat menentukannya dalam PVC. Contoh di bawah membuat PVC bernama
my-pvc
yang mereferensikanmy-custom-class
StorageClass.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageClassName: my-custom-class
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:
Update 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 berikut StorageClass menggunakan driver
ebs.csi.aws.com
. Untuk menginstal driver penyimpanan lain, lihat Menginstal driver CSI tambahan.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 allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer parameters: type: EBS_VOLUME_TYPE
Ganti kode berikut:
EBS_VOLUME_TYPE
: jenis volume EBS AWS yang dibuat StorageClass.CLASS_NAME
dengan nama StorageClass baru Anda
Misalnya, YAML berikut membuat StorageClass default baru yang menyediakan volume SSD Tujuan Umum (gp3).
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 allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer parameters: type: gp3
Terapkan class kustom baru ke cluster Anda.
kubectl apply -f my-custom-class.yaml
Setelah menerapkan manifes ini, GKE di AWS menggunakan StorageClass my-custom-default-class
untuk permintaan penyimpanan baru.
Mereferensikan StorageClass dalam StatefulSet
Untuk menggunakan StorageClass baru, Anda harus mereferensikannya dalam volumeClaimTemplates
StatefulSet.
Saat Anda mereferensikan StorageClass dalam spesifikasi volumeClaimTemplates
StatefulSet, Kubernetes akan menyediakan penyimpanan 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 selanjutnya
Pelajari Volume persisten dan penyediaan dinamis di GKE.
Instal driver CSI tambahan di GKE Anda di AWS.
Deploy workload pertama Anda dengan Panduan Memulai.