Halaman ini menjelaskan cara menambahkan persistent disk ke cluster Anda menggunakan mode akses ReadOnlyMany. Mode ini memungkinkan beberapa Pod di node yang berbeda memasang disk untuk membaca.
Untuk informasi selengkapnya tentang mode ini, lihat mode akses volume persisten.
Persyaratan
- Cluster Anda harus menjalankan GKE versi 1.22 atau yang lebih baru.
- Cluster Anda harus menggunakan driver CSI persistent disk Compute Engine.
Memformat dan mengisi persistent disk sumber
Untuk menggunakan persistent disk dalam mode hanya baca, Anda harus mengisi persistent disk sumber dengan data, lalu meng-clone volume tersebut atau menggunakan snapshot volume untuk memindahkan data ke PersistentVolume ReadOnlyMany baru.
Buat PersistentVolume menggunakan persistent disk yang sudah ada atau menggunakan penyediaan dinamis.
Format disk dan isi dengan data. Untuk memformat disk, referensikan disk tersebut sebagai PersistentVolume ReadWriteOnce di sebuah Pod. GKE akan otomatis memformat disk pokok, dan mengizinkan Pod menulis data ke disk tersebut. Saat Pod dimulai, pastikan Pod menulis data yang Anda inginkan ke disk.
Membuat PersistentVolume ReadOnlyMany
Anda dapat membuat PersistentVolume ReadOnlyMany
menggunakan salah satu metode berikut:
- Snapshot volume dari PersistentVolume sumber yang Anda isi dengan data.
- Clone volume dari PersistentVolume sumber yang Anda isi dengan data.
Persistent disk yang sudah ada sebelumnya dan sudah diisi dengan data.
Snapshot volume
Simpan manifes PersistentVolumeClaim berikut sebagai
snapshot-pvc.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: namespace: PVC_NAMESPACE name: PVC_NAME spec: dataSource: apiGroup: snapshot.storage.k8s.io kind: VolumeSnapshot name: SNAPSHOT_NAME accessModes: - ReadOnlyMany storageClassName: premium-rwo resources: requests: storage: STORAGE_SIZE
Ganti kode berikut:
PVC_NAMESPACE
: namespace PersistentVolumeClaim yang baru.PVC_NAME
: nama PersistentVolumeClaim baru.SNAPSHOT_NAME
:nama objekVolumeSnapshot
Anda.STORAGE_SIZE
: ukuran penyimpanan yang akan diminta. Ukuran ini harus sama dengan yang diminta di PersistentVolumeClaim sumber.
Terapkan manifes ke cluster Anda:
kubectl apply -f snapshot-pvc.yaml
Tindakan ini akan membuat PersistentVolumeClaim baru bernama PVC_NAME
di cluster Anda, yang digunakan GKE untuk menyediakan PersistentVolume baru secara dinamis yang berisi data dari snapshot persistent disk sumber.
Cloning volume
Sebelum menggunakan cloning volume, pastikan Anda memahami keterbatasan pendekatan ini.
Simpan manifes berikut sebagai
cloning-pvc.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: namespace: PVC_NAMESPACE name: PVC_NAME spec: dataSource: name: SOURCE_PVC kind: PersistentVolumeClaim accessModes: - ReadOnlyMany storageClassName: STORAGE_CLASS_NAME resources: requests: storage: STORAGE_SIZE
Ganti kode berikut:
PVC_NAMESPACE
: namespace PersistentVolumeClaim yang baru.PVC_NAME
: nama PersistentVolumeClaim baru.SOURCE_PVC
: nama PersistentVolumeClaim sumber yang diisi dengan data.STORAGE_CLASS_NAME
: kelas penyimpanan untuk PersistentVolumeClaim baru. Nilai ini harus sama dengan kelas penyimpanan PersistentVolumeClaim sumber.STORAGE_SIZE
: Ukuran penyimpanan untuk PersistentVolumeClaim baru. Ukuran ini harus sama dengan yang diminta oleh PersistentVolumeClaim sumber.
Terapkan manifes ke cluster Anda:
kubectl apply -f cloning-pvc.yaml
Tindakan ini menghasilkan PersistentVolumeClaim bernama PVC_NAME
yang digunakan GKE untuk membuat PersistentVolume baru dalam mode ReadOnlyMany dengan data di PersistentVolume sumber.
Untuk informasi selengkapnya tentang Cloning Volume, lihat Membuat clone volume persisten.
Persistent disk yang sudah ada
Simpan manifes berikut sebagai
preexisting-disk-pv-pvc.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: PV_NAME spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: DISK_SIZE accessModes: - ReadOnlyMany claimRef: namespace: PVC_NAMESPACE name: PVC_NAME csi: driver: pd.csi.storage.gke.io volumeHandle: DISK_ID fsType: FS_TYPE readOnly: true --- apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: PVC_NAMESPACE name: PVC_NAME spec: storageClassName: "STORAGE_CLASS_NAME" volumeName: PV_NAME accessModes: - ReadOnlyMany resources: requests: storage: DISK_SIZE
Ganti kode berikut:
PV_NAME
: nama PersistentVolume baru Anda.STORAGE_CLASS_NAME
: nama StorageClass baru Anda.DISK_SIZE
: ukuran persistent disk yang sudah ada. Contoh,500G
.PVC_NAMESPACE
: namespace PersistentVolumeClaim yang baru.PVC_NAME
: nama PersistentVolumeClaim baru Anda.DISK_ID
: ID persistent disk yang sudah ada. Formatnya adalahprojects/{project_id}/zones/{zone_name}/disks/{disk_name}
untuk Persistent disk zona, atauprojects/{project_id}/regions/{region_name}/disks/{disk_name}
untuk Persistent disk regional.FS_TYPE
: jenis sistem file. Anda dapat membiarkan jenis sistem fileext4
sebagai default, atau menggunakanxfs
. Jika cluster Anda menggunakan node pool Windows Server, Anda harus mengubahnya menjadiNTFS
.
Terapkan manifes ke cluster Anda:
kubectl apply -f preexisting-disk-pv-pvc.yaml
Tindakan ini menghasilkan PersistentVolumeClaim bernama PVC_NAME
dan PersistentVolume bernama PV_NAME
dalam mode ReadOnlyMany.
Untuk informasi lebih mendetail tentang penggunaan persistent disk yang sudah ada, lihat persistent disk yang sudah ada.
Menggunakan PersistentVolumeClaim di Pod
Sekarang Anda dapat mereferensikan PersistentVolumeClaim baru dalam mode hanya baca di banyak Pod yang berada di banyak node secara bersamaan. Anda tidak dapat memasang persistent disk dalam mode ReadWriteOnly ke banyak node secara bersamaan. Untuk informasi selengkapnya, lihat Deployment vs. StatefulSet.
Dalam spesifikasi Pod, Anda harus menentukan readOnly: true
di bagian volumeMounts
dan bagian volumes
, seperti pada contoh berikut:
apiVersion: apps/v1
kind: Deployment
metadata:
name: multi-read
labels:
app: web-server
spec:
replicas: 3
selector:
matchLabels:
app: web-server
template:
metadata:
labels:
app: web-server
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- mountPath: /test-mnt
name: my-volume
readOnly: true
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: PVC_NAME
readOnly: true
Langkah berikutnya
- Pelajari lebih lanjut cara menggunakan persistent disk yang sudah ada sebagai PersistentVolume.
- Pelajari lebih lanjut Persistent disk Compute Engine.