Halaman ini menjelaskan cara mengaktifkan penyediaan dinamis persistent disk regional dan cara menyediakannya secara manual di Google Kubernetes Engine (GKE).
Untuk membuat solusi end-to-end bagi aplikasi ketersediaan tinggi dengan persistent disk regional, lihat Meningkatkan ketersediaan aplikasi stateful dengan Operator HA Stateful.
Persistent disk menurut region
Sama seperti persistent disk zona, persistent disk regional dapat disediakan secara dinamis sesuai kebutuhan atau disediakan secara manual terlebih dahulu oleh administrator cluster, meskipun penyediaan dinamis direkomendasikan.
Penyediaan dinamis
Untuk mengaktifkan penyediaan dinamis persistent disk regional, buat
StorageClass
dengan parameter replication-type
, dan tentukan batasan
zona di allowedTopologies
.
Misalnya, manifes berikut menjelaskan StorageClass
bernama
regionalpd-storageclass
yang menggunakan persistent disk
standar dan mereplikasi data ke zona europe-west1-b
dan
europe-west1-c
:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: regionalpd-storageclass
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-balanced
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
- key: topology.gke.io/zone
values:
- europe-west1-b
- europe-west1-c
Jika menggunakan cluster regional, Anda dapat membiarkan allowedTopologies
tidak ditentukan. Jika
Anda melakukannya, saat membuat Pod yang menggunakan PersistentVolumeClaim
dengan StorageClass
, persistent disk regional akan disediakan dengan
dua zona. Satu zona sama dengan zona tempat Pod dijadwalkan. Zona
lainnya diambil secara acak dari zona yang tersedia untuk cluster.
Saat menggunakan cluster zona, allowedTopologies
harus ditetapkan.
Setelah StorageClass
dibuat, selanjutnya buat objek PersistentVolumeClaim
menggunakan kolom storageClassName
untuk merujuk ke StorageClass
. Misalnya,
manifes berikut membuat PersistentVolumeClaim
bernama
regional-pvc
dan mereferensikan regionalpd-storageclass
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: regional-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Gi
storageClassName: regionalpd-storageclass
Karena StorageClass
dikonfigurasi dengan
volumeBindingMode: WaitForFirstConsumer
, PersistentVolume
tidak akan
disediakan hingga Pod yang menggunakan PersistentVolumeClaim
telah dibuat.
Manifes berikut adalah contoh Pod menggunakan PersistentVolumeClaim
yang dibuat sebelumnya:
kind: Pod
apiVersion: v1
metadata:
name: task-pv-pod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: regional-pvc
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
Penyediaan manual
Pertama, buat persistent disk regional menggunakan
perintah
gcloud compute disks create
. Contoh berikut membuat disk bernama gce-disk-1
yang direplikasi ke zona europe-west1-b
dan europe-west1-c
:
gcloud compute disks create gce-disk-1 \
--size 500Gi \
--region europe-west1 \
--replica-zones europe-west1-b,europe-west1-c
Anda kemudian dapat membuat PersistentVolume
yang mereferensikan persistent disk
regional yang baru saja dibuat. Selain objek di
Menggunakan Persistent Disk yang sudah ada sebagai PersistentVolume,
PersistentVolume
untuk persistent disk regional juga harus menentukan
node-affinity
.
Jika Anda menggunakan StorageClass
, driver CSI persistent disk harus ditentukan.
Berikut ini contoh manifes StorageClass
yang menggunakan persistent
disk standar dan mereplikasi data ke zona
europe-west1-b
dan europe-west1-c
:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: regionalpd-storageclass
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-balanced
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
- key: topology.gke.io/zone
values:
- europe-west1-b
- europe-west1-c
Berikut ini contoh manifes yang membuat PersistentVolume
bernama
pv-demo
dan mereferensikan regionalpd-storageclass
:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-demo
spec:
storageClassName: "regionalpd-storageclass"
capacity:
storage: 500Gi
accessModes:
- ReadWriteOnce
claimRef:
namespace: default
name: pv-claim-demo
csi:
driver: pd.csi.storage.gke.io
volumeHandle: projects/PROJECT_ID/regions/europe-west1/disks/gce-disk-1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: topology.gke.io/zone
operator: In
values:
- europe-west1-b
- europe-west1-c
Perhatikan hal berikut untuk contoh PersistentVolume
:
- Kolom
volumeHandle
berisi detail dari panggilangcloud compute disks create
, termasukPROJECT_ID
Anda. - Kolom
claimRef.namespace
harus ditentukan bahkan jika ditetapkan kedefault
.
Penamaan persistent disk
Kubernetes tidak dapat membedakan persistent disk zona dan regional dengan nama yang sama. Sebagai solusinya, pastikan persistent disk memiliki nama yang unik. Masalah ini tidak terjadi saat menggunakan persistent disk yang disediakan secara dinamis.
Langkah selanjutnya
- Ikuti tutorial untuk mempelajari cara Men-deploy WordPress di GKE dengan Persistent Disk dan Cloud SQL.