Halaman ini menjelaskan cara mengaktifkan penyediaan dinamis volume Hyperdisk Balanced High Availability dan persistent disk regional serta cara menyediakannya secara manual di Google Kubernetes Engine (GKE). Untuk kompatibilitas jenis mesin, lihat Batasan untuk Disk Regional dan Dukungan seri mesin untuk Hyperdisk. Umumnya, Anda harus menggunakan volume Hyperdisk Balanced High Availability untuk seri mesin generasi ke-3 atau yang lebih baru dan persistent disk regional di seri mesin generasi ke-2 atau yang lebih lama. Untuk mengetahui informasi selengkapnya tentang generasi seri mesin, lihat Terminologi Compute Engine.
Untuk membuat solusi menyeluruh bagi aplikasi dengan ketersediaan tinggi menggunakan persistent disk regional, lihat Meningkatkan ketersediaan aplikasi stateful dengan Operator HA Stateful. Fitur ini tidak mendukung volume Hyperdisk Balanced High Availability.
Hyperdisk Balanced High Availability
Contoh ini menunjukkan cara volume Hyperdisk Balanced High Availability dapat disediakan secara dinamis sesuai kebutuhan atau disediakan secara manual terlebih dahulu oleh administrator cluster.
Penyediaan dinamis
Simpan manifes berikut dalam file bernama
balanced-ha-storage.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-ha-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced-high-availability provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000" allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: - ZONE1 - ZONE2
Ganti kode berikut:
ZONE1
,ZONE2
: zona dalam region tempat volume yang disediakan secara dinamis akan direplikasi.
Buat StorageClass:
kubectl create -f hdb-ha-example-class.yaml
Simpan manifes PersistentVolumeClaim berikut dalam file bernama
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ACCESS_MODE storageClassName: balanced-ha-storage resources: requests: storage: 20Gi
Ganti kode berikut:
ACCESS_MODE
: Hyperdisk Balanced High Availability mendukungReadWriteOnce
,ReadWriteMany
, danReadWriteOncePod
. Untuk mengetahui perbedaan dan kasus penggunaan setiap mode akses, lihat Mode Akses Volume Persisten.
Terapkan PersistentVolumeClaim yang mereferensikan StorageClass yang Anda buat sebelumnya:
kubectl apply -f pvc-example.yaml
Penyediaan Manual
Ikuti dokumentasi Compute Engine untuk membuat volume Hyperdisk Balanced High Availability secara manual.
Simpan manifes PersistentVolume berikut dalam file bernama
pv-example.yaml
. Manifes mereferensikan volume Hyperdisk Balanced High Availability yang baru saja Anda buat:apiVersion: v1 kind: PersistentVolume metadata: name: pv-demo spec: capacity: storage: 500Gi accessModes: - ACCESS_MODE claimRef: namespace: default name: podpvc csi: driver: pd.csi.storage.gke.io volumeHandle: projects/PROJECT_ID/regions/REGION/disks/gce-disk-1 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.gke.io/zone operator: In values: - ZONE1 - ZONE2
Ganti kode berikut:
PROJECT_ID
: project ID volume yang Anda buat.REGION
: region disk yang Anda buat. Lihat dokumentasi Compute Engine untuk mengetahui ketersediaan regional terbaru.ZONE1
,ZONE2
: zona dalam region tempat volume yang Anda buat direplikasi.ACCESS_MODE
: Hyperdisk Balanced High Availability mendukungReadWriteOnce
,ReadWriteMany
, danReadWriteOncePod
. Untuk mengetahui perbedaan dan kasus penggunaan setiap mode akses, lihat Mode Akses Volume Persisten.
Buat Persistent Volume yang mereferensikan volume Hyperdisk Balanced High Availability yang Anda buat sebelumnya:
kubectl apply -f pv-example.yaml
Simpan manifes PersistentVolumeClaim berikut dalam file bernama
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ACCESS_MODE storageClassName: balanced-ha-storage resources: requests: storage: 20Gi
Ganti kode berikut:
ACCESS_MODE
: Hyperdisk Balanced High Availability mendukungReadWriteOnce
,ReadWriteMany
, danReadWriteOncePod
. Harus memiliki mode akses yang sama dengan yang ditentukan di PersistentVolume dari langkah sebelumnya. Untuk mengetahui perbedaan dan kasus penggunaan setiap mode akses, lihat Mode Akses Volume Persisten.
Terapkan PersistentVolumeClaim yang mereferensikan PersistentVolume yang Anda buat sebelumnya:
kubectl apply -f pvc-example.yaml
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.
Untuk menggunakan persistent disk regional jenis pd-standard
, tetapkan atribut spec.resources.requests.storage
PersistentVolumeClaim ke minimum 200 GiB. Jika kasus penggunaan Anda memerlukan volume yang lebih kecil, sebaiknya gunakan pd-balanced
atau pd-ssd
.
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 berikutnya
- Ikuti tutorial untuk mempelajari cara Men-deploy WordPress di GKE dengan Persistent Disk dan Cloud SQL.