Elastic File System (EFS) adalah mekanisme AWS yang mendasarinya untuk menyediakan penyimpanan (ruang disk) ke cluster Anda. PersistentVolume adalah resource cluster yang membuat penyimpanan EFS tersedia untuk workload Anda dan memastikan bahwa penyimpanan tersebut tetap ada meskipun tidak ada workload yang terhubung ke penyimpanan tersebut. Topik ini menjelaskan cara workload dapat mengakses PersistentVolume dengan PersistentVolumeClaim.
Halaman ini ditujukan bagi Operator dan spesialis Penyimpanan yang ingin mengonfigurasi dan mengelola penyimpanan. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE umum. Google Cloud
GKE on AWS mendukung penyediaan statis PersistentVolume untuk semua
versi Kubernetes yang didukung. Untuk cluster di Kubernetes versi 1.24 atau yang lebih baru, GKE di AWS juga mendukung penyediaan dinamis. Untuk menggunakan penyediaan
dinamis, administrator cluster Anda harus mengonfigurasinya. Untuk mempelajari caranya, lihat
mengonfigurasi PersistentVolume
.
Membuat PersistentVolumeClaim
Pilih tab yang sesuai di bawah, bergantung pada apakah Anda ingin beban kerja terhubung ke volume persisten yang disediakan secara statis atau dinamis.
Statis
Petunjuk ini mengasumsikan bahwa administrator cluster Anda telah menyediakan setidaknya satu PersistentVolume. Untuk mengakses PersistentVolume ini dan menggunakan EFS yang mendasarinya dengan workload Anda, buat PersistentVolumeClaim.
Untuk membuat PersistentVolumeClaim untuk PersistentVolume yang disediakan secara statis,
salin manifes YAML berikut ke dalam file bernama efs-claim.yaml
.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: CLAIM_NAME
spec:
accessModes:
- ReadWriteMany
storageClassName: "" # Leave as empty string for static provisioning
resources:
requests:
storage: 5Gi
Ganti:
- CLAIM_NAME: nama yang Anda pilih untuk PersistentVolumeClaim
yang akan diikat - misalnya,
efs-claim1
. Biarkan kosong untuk mengikat ke kelas penyimpanan default
Terapkan YAML ke cluster Anda.
kubectl apply -f efs-claim.yaml
Output ini mengonfirmasi pembuatan PersistentVolumeClaim.
persistentvolumeclaim/CLAIM_NAME created
Dinamis
Petunjuk ini mengasumsikan bahwa administrator cluster Anda telah menyediakan setidaknya satu StorageClass untuk penyediaan dinamis. Untuk membuat PersistentVolume yang disediakan secara dinamis dengan StorageClass ini dan menggunakan titik akses EFS yang mendasarinya dengan workload Anda, buat PersistentVolumeClaim.
Untuk membuat PersistentVolumeClaim, ikuti langkah-langkah berikut. Driver CSI EFS menggunakan PersistentVolumeClaim ini dengan StorageClass yang ditunjukkan untuk menyediakan PersistentVolume secara dinamis.
- Salin manifes YAML berikut ke dalam file bernama
efs-claim.yaml
.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: CLAIM_NAME
spec:
accessModes:
- ReadWriteMany
storageClassName: "EFS_STORAGE_CLASS_NAME"
resources:
requests:
storage: 5Gi
Ganti:
- CLAIM_NAME: nama yang Anda pilih untuk PersistentVolumeClaim -
misalnya,
efs-claim1
- EFS_STORAGE_CLASS_NAME: nama StorageClass yang Anda inginkan untuk pengikatan PersistentVolumeClaim. Kosongkan kolom ini untuk mengikat ke kelas penyimpanan default
Terapkan YAML ke cluster Anda.
kubectl apply -f efs-claim.yaml
Output mengonfirmasi pembuatan PersistentVolumeClaim.
persistentvolumeclaim/CLAIM_NAME created
Buat StatefulSet
Setelah membuat PersistentVolumeClaim, Anda dapat menggunakannya dalam workload.
Bagian ini membuat StatefulSet contoh yang menggunakan PersistentVolumeClaim.
Anda juga dapat menggunakan PersistentVolumeClaim dengan jenis workload lain seperti Pod dan Deployment dengan mereferensikan klaim di spec.volumes
.
Untuk membuat StatefulSet yang me-mount resource EFS yang dirujuk di PersistentVolumeClaim Anda, lakukan langkah-langkah berikut.
Salin manifes YAML berikut ke dalam file bernama
efs-statefulset.yaml
. Contoh manifes ini meluncurkan container Ubuntu Linux yang memasang resource EFS Anda di/efs-data
. Kontainer menulis setiap lima detik ke file di resource EFS Anda yang bernamaout.txt
.apiVersion: apps/v1 kind: StatefulSet metadata: name: efs-shell spec: selector: matchLabels: app: test-efs serviceName: efs-app replicas: 1 template: metadata: labels: app: test-efs spec: terminationGracePeriodSeconds: 10 containers: - name: linux image: ubuntu:bionic command: ["/bin/sh"] args: ["-c", "while true; do echo $(date -u) >> /efs-data/out.txt; sleep 5; done"] volumeMounts: - name: efs-volume mountPath: /efs-data volumes: - name: efs-volume persistentVolumeClaim: claimName: CLAIM_NAME
Ganti CLAIM_NAME dengan nama PersistentVolumeClaim yang Anda tentukan sebelumnya - misalnya,
efs-claim1
.Terapkan YAML ke cluster Anda.
kubectl apply -f efs-statefulset.yaml
Output mengonfirmasi pembuatan StatefulSet.
statefulset.apps/efs-shell created
StatefulSet mungkin memerlukan waktu beberapa menit untuk mendownload dan meluncurkan image penampung.
Konfirmasi bahwa Pod StatefulSet berada dalam status
Running
dengankubectl get pods
.kubectl get pods -l app=test-efs
Output mencakup nama Pod dan statusnya. Dalam respons berikut, nama Pod adalah
efs-shell-0
.NAME READY STATUS RESTARTS AGE efs-shell-0 1/1 Running 0 1m
Setelah Pod berstatus Berjalan, gunakan
kubectl exec
untuk terhubung ke Pod yang menghosting StatefulSet.kubectl exec -it efs-shell-0 -- bash
Perintah
kubectl
meluncurkan shell di Pod.Untuk mengonfirmasi bahwa resource EFS Anda telah di-mount, periksa konten file
out.txt
dengan perintahtail
.tail /efs-data/out.txt
Output berisi waktu terbaru dalam UTC.
Putuskan koneksi dari Pod dengan perintah
exit
.exit
Shell Anda akan kembali ke komputer lokal Anda.
Pembersihan
Untuk menghapus StatefulSet, gunakan kubectl delete
.
kubectl delete -f efs-statefulset.yaml
Langkah berikutnya
- Pelajari cara mengonfigurasi resource EFS
- Pelajari cara menggunakan StorageClass dengan workload Anda