Panduan ini menjelaskan cara meningkatkan performa aplikasi stateful yang banyak melakukan operasi baca menggunakan GKE Data Cache di cluster Google Kubernetes Engine (GKE). GKE Data Cache adalah solusi penyimpanan blok terkelola yang mempercepat operasi baca untuk aplikasi stateful Anda, seperti database, yang berjalan di GKE.
Anda hanya dapat menggunakan Cache Data dengan cluster GKE Standard. Panduan ini akan memandu Anda mengaktifkan GKE Data Cache saat membuat cluster Standard GKE atau node pool baru, dan menyediakan disk terpasang GKE dengan akselerasi Data Cache.
Tentang GKE Data Cache
Dengan GKE Data Cache, Anda dapat menggunakan SSD Lokal di node GKE sebagai lapisan cache untuk penyimpanan persisten, seperti Persistent Disk atau Hyperdisk. Penggunaan SSD Lokal mengurangi latensi baca disk dan meningkatkan kueri per detik (QPS) untuk workload stateful Anda sekaligus meminimalkan persyaratan memori. GKE Data Cache mendukung semua jenis Persistent Disk atau Hyperdisk sebagai disk pendukung.
Untuk menggunakan GKE Data Cache bagi aplikasi Anda, konfigurasi node pool GKE dengan SSD Lokal terpasang. Anda dapat mengonfigurasi GKE Data Cache untuk menggunakan semua atau sebagian SSD Lokal yang terpasang. SSD lokal yang digunakan oleh solusi GKE Data Cache dienkripsi dalam penyimpanan menggunakan enkripsi Trusted Cloud by S3NS standar.
Manfaat
GKE Data Cache menawarkan manfaat berikut:
- Peningkatan kecepatan kueri yang ditangani per detik untuk database konvensional, seperti MySQL atau Postgres, dan database vektor.
- Peningkatan performa baca untuk aplikasi stateful dengan meminimalkan latensi disk.
- Hydrasi dan rehidrasi data yang lebih cepat karena SSD bersifat lokal untuk node. Pengambilan data mengacu pada proses awal pemuatan data yang diperlukan dari penyimpanan persisten ke SSD Lokal. Rehidrasi data mengacu pada proses memulihkan data di SSD Lokal setelah node didaur ulang.
Arsitektur deployment
Diagram berikut menunjukkan contoh konfigurasi GKE Data Cache dengan dua Pod yang masing-masing menjalankan aplikasi. Pod berjalan di node GKE yang sama. Setiap Pod menggunakan SSD Lokal terpisah dan persistent disk pendukung.

Mode deployment
Anda dapat menyiapkan GKE Data Cache dalam salah satu dari dua mode:
- Tulis langsung (Direkomendasikan): Saat aplikasi Anda menulis data, data akan
ditulis secara sinkron ke cache dan persistent disk pokok. Mode
writethrough
mencegah kehilangan data, dan cocok untuk sebagian besar workload produksi. - Penulisan balik: Saat aplikasi Anda menulis data, data hanya ditulis
ke cache. Kemudian, data ditulis ke persistent disk secara asinkron
(di latar belakang). Mode
writeback
meningkatkan performa penulisan, dan cocok untuk workload yang mengandalkan kecepatan. Namun, mode ini memengaruhi keandalan. Jika node dimatikan secara tidak terduga, data cache yang belum di-flush akan hilang.
Tujuan
Dalam panduan ini, Anda akan mempelajari cara:
- Buat infrastruktur GKE pokok untuk menggunakan GKE Data Cache.
- Buat node pool khusus dengan SSD Lokal terpasang.
- Buat StorageClass untuk menyediakan PersistentVolume (PV) secara dinamis saat Pod memintanya melalui PersistentVolumeClaim (PVC).
- Buat PVC untuk meminta PV.
- Buat Deployment yang menggunakan PVC untuk memastikan aplikasi Anda memiliki akses ke penyimpanan persisten bahkan setelah Pod dimulai ulang, dan selama penjadwalan ulang.
Persyaratan dan perencanaan
Pastikan Anda memenuhi persyaratan berikut untuk menggunakan GKE Data Cache:
- Cluster GKE Anda harus menjalankan versi 1.32.3-gke.1440000 atau yang lebih baru.
- Node pool Anda harus menggunakan jenis mesin yang mendukung SSD Lokal. Untuk mengetahui informasi selengkapnya, lihat Dukungan seri mesin.
Perencanaan
Pertimbangkan aspek-aspek berikut saat Anda merencanakan kapasitas penyimpanan untuk GKE Data Cache:
- Jumlah maksimum Pod per node yang akan menggunakan GKE Data Cache secara bersamaan.
- Persyaratan ukuran cache yang diharapkan dari Pod yang akan menggunakan GKE Data Cache.
- Total kapasitas SSD Lokal yang tersedia di node GKE Anda. Untuk mengetahui informasi tentang jenis mesin yang memiliki SSD Lokal yang terpasang secara default dan jenis mesin yang mengharuskan Anda memasang SSD Lokal, lihat Memilih jumlah disk SSD Lokal yang valid.
- Untuk jenis mesin generasi ketiga atau yang lebih baru (yang memiliki jumlah SSD Lokal default yang terpasang), perhatikan bahwa SSD Lokal untuk Cache Data dicadangkan dari total SSD Lokal yang tersedia di mesin tersebut.
- Overhead sistem file yang dapat mengurangi ruang yang dapat digunakan di SSD Lokal. Misalnya, meskipun Anda memiliki node yang memiliki dua SSD Lokal dengan total kapasitas mentah 750 GiB, ruang yang tersedia untuk semua volume Cache Data mungkin lebih sedikit karena overhead sistem file. Beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.
Harga
Anda akan ditagih untuk total kapasitas yang disediakan untuk SSD Lokal dan persistent disk yang terpasang. Anda dikenai biaya per GiB per bulan.
Untuk mengetahui informasi selengkapnya, lihat Harga disk di dokumentasi Compute Engine.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
- Tinjau jenis mesin yang mendukung SSD Lokal untuk node pool Anda.
Mengonfigurasi node GKE untuk menggunakan Cache Data
Untuk mulai menggunakan GKE Data Cache untuk penyimpanan yang dipercepat, node Anda harus memiliki resource SSD Lokal yang diperlukan. Bagian ini menunjukkan perintah untuk menyediakan SSD Lokal dan mengaktifkan GKE Data Cache saat Anda membuat cluster GKE baru atau menambahkan node pool baru ke cluster yang ada. Anda tidak dapat mengupdate node pool yang ada untuk menggunakan Cache Data. Jika Anda ingin menggunakan Cache Data di cluster yang ada, tambahkan kumpulan node baru ke cluster.
Di cluster baru
Untuk membuat cluster GKE dengan Data Cache yang dikonfigurasi, gunakan perintah berikut:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--data-cache-count=DATA_CACHE_COUNT \
# Optionally specify additional Local SSDs, or skip this flag
--ephemeral-storage-local-ssd count=LOCAL_SSD_COUNT
Ganti kode berikut:
CLUSTER_NAME
: nama cluster. Berikan nama unik untuk cluster GKE yang Anda buat.LOCATION
: Trusted Cloud by S3NS region atau zona untuk cluster baru.MACHINE_TYPE
: jenis mesin yang akan digunakan dari seri mesin generasi kedua, ketiga, atau yang lebih baru untuk cluster Anda, sepertin2-standard-2
atauc3-standard-4-lssd
. Kolom ini wajib diisi karena SSD Lokal tidak dapat digunakan dengan jenise2-medium
default. Untuk mengetahui informasi selengkapnya, lihat seri mesin yang tersedia.DATA_CACHE_COUNT
: jumlah volume SSD Lokal yang akan dikhususkan secara eksklusif untuk Cache Data di setiap node dalam node pool default. Setiap SSD Lokal ini memiliki kapasitas 375 GiB. Jumlah maksimum volume bervariasi menurut jenis mesin dan region. Perlu diketahui bahwa beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.(Opsional)
LOCAL_SSD_COUNT
: jumlah volume SSD Lokal yang akan disediakan untuk kebutuhan penyimpanan efemeral lainnya. Gunakan flag--ephemeral-storage-local-ssd count
jika Anda ingin menyediakan SSD Lokal tambahan yang tidak digunakan untuk Cache Data.Perhatikan hal berikut untuk jenis mesin generasi ketiga atau yang lebih baru:
- Jenis mesin generasi ketiga atau yang lebih baru memiliki sejumlah SSD Lokal yang terpasang secara default. Jumlah SSD Lokal yang terpasang ke setiap node bergantung pada jenis mesin yang Anda tentukan.
- Jika Anda berencana menggunakan flag
--ephemeral-storage-local-ssd count
untuk penyimpanan efemeral tambahan, pastikan untuk menyetel nilaiDATA_CACHE_COUNT
ke angka yang lebih kecil daripada disk SSD Lokal total yang tersedia di mesin. Jumlah SSD Lokal yang tersedia total mencakup disk yang terpasang secara default dan disk baru yang Anda tambahkan menggunakan tanda--ephemeral-storage-local-ssd count
.
Perintah ini membuat cluster GKE yang berjalan di jenis mesin generasi kedua, ketiga, atau yang lebih baru untuk node pool default-nya, menyediakan SSD Lokal untuk Cache Data, dan secara opsional menyediakan SSD Lokal tambahan untuk kebutuhan penyimpanan sementara lainnya, jika ditentukan.
Setelan ini hanya berlaku untuk node pool default.
Di cluster yang sudah ada
Untuk menggunakan Cache Data di cluster yang ada, Anda harus membuat kumpulan node baru dengan Cache Data yang dikonfigurasi.
Untuk membuat node pool GKE dengan Konfigurasi Cache Data, gunakan perintah berikut:
gcloud container node-pool create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--data-cache-count=DATA_CACHE_COUNT \
# Optionally specify additional Local SSDs, or skip this flag
--ephemeral-storage-local-ssd count=LOCAL_SSD_COUNT
Ganti kode berikut:
NODE_POOL_NAME
: nama node pool. Berikan nama unik untuk node pool yang Anda buat.CLUSTER_NAME
: nama cluster GKE yang ada tempat Anda ingin membuat node pool.LOCATION
: Trusted Cloud by S3NS region atau zona yang sama dengan cluster Anda.MACHINE_TYPE
: jenis mesin yang akan digunakan dari seri mesin generasi kedua, ketiga, atau yang lebih baru untuk cluster Anda, sepertin2-standard-2
atauc3-standard-4-lssd
. Kolom ini wajib diisi, karena SSD Lokal tidak dapat digunakan dengan jenise2-medium
default. Untuk mengetahui informasi selengkapnya, lihat seri mesin yang tersedia.DATA_CACHE_COUNT
: jumlah volume SSD Lokal yang akan dikhususkan secara eksklusif untuk Cache Data di setiap node dalam node pool. Setiap SSD Lokal ini memiliki kapasitas 375 GiB. Jumlah maksimum volume bervariasi menurut jenis mesin dan region. Perlu diketahui bahwa beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.(Opsional)
LOCAL_SSD_COUNT
: jumlah volume SSD Lokal yang akan disediakan untuk kebutuhan penyimpanan efemeral lainnya. Gunakan flag--ephemeral-storage-local-ssd count
jika Anda ingin menyediakan SSD Lokal tambahan yang tidak digunakan untuk Cache Data.Perhatikan hal berikut untuk jenis mesin generasi ketiga atau yang lebih baru:
- Jenis mesin generasi ketiga atau yang lebih baru memiliki sejumlah SSD Lokal yang terpasang secara default. Jumlah SSD Lokal yang terpasang ke setiap node bergantung pada jenis mesin yang Anda tentukan.
- Jika Anda berencana menggunakan tanda
--ephemeral-storage-local-ssd count
untuk penyimpanan efemeral tambahan, pastikan untuk menyetelDATA_CACHE_COUNT
ke kurang dari total disk SSD Lokal yang tersedia di mesin. Jumlah SSD Lokal yang tersedia total mencakup disk yang terpasang secara default dan disk baru yang Anda tambahkan menggunakan tanda--ephemeral-storage-local-ssd count
.
Perintah ini membuat node pool GKE yang berjalan pada jenis mesin generasi kedua, ketiga, atau yang lebih baru, menyediakan SSD Lokal untuk Cache Data, dan secara opsional menyediakan SSD Lokal tambahan untuk kebutuhan penyimpanan efemeral lainnya, jika ditentukan.
Menyediakan Cache Data untuk penyimpanan persisten di GKE
Bagian ini memberikan contoh cara mengaktifkan manfaat performa GKE Data Cache untuk aplikasi stateful Anda.
Membuat node pool dengan SSD Lokal untuk Cache Data
Mulailah dengan membuat node pool baru dengan SSD Lokal terpasang di cluster GKE Anda. Cache Data GKE menggunakan SSD Lokal untuk mempercepat performa persistent disk yang terpasang.
Perintah berikut akan membuat node pool yang menggunakan mesin generasi kedua,
n2-standard-2
:
gcloud container node-pools create datacache-node-pool \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--num-nodes=2 \
--data-cache-count=1 \
--machine-type=n2-standard-2
Ganti kode berikut:
CLUSTER_NAME
: nama cluster. Tentukan cluster GKE tempat Anda membuat node pool baru.LOCATION
: region atau zona Trusted Cloud by S3NS yang sama dengan cluster Anda.
Perintah ini membuat node pool dengan spesifikasi berikut:
--num-nodes=2
: menetapkan jumlah awal node dalam pool ini menjadi dua.--data-cache-count=1
: menentukan satu SSD Lokal per node yang dikhususkan untuk GKE Data Cache.
Total jumlah SSD Lokal yang disediakan untuk node pool ini adalah dua karena setiap node disediakan dengan satu SSD Lokal.
Membuat StorageClass Cache Data
Buat StorageClass
Kubernetes yang memberi tahu GKE cara menyediakan volume persisten secara dinamis yang menggunakan Cache Data.
Gunakan manifes berikut untuk membuat dan menerapkan StorageClass
bernama pd-balanced-data-cache-sc
:
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-balanced-data-cache-sc
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-balanced
data-cache-mode: writethrough
data-cache-size: "100Gi"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
EOF
Parameter StorageClass
untuk Cache Data mencakup hal berikut:
type
: menentukan jenis disk pokok untuk volume persisten. Untuk mengetahui opsi lainnya, lihat jenis Persistent Disk yang didukung atau jenis Hyperdisk.data-cache-mode
: menggunakan modewritethrough
yang direkomendasikan. Untuk mengetahui informasi selengkapnya, lihat Mode deployment.data-cache-size
: menetapkan kapasitas SSD Lokal ke 100 GiB, yang digunakan sebagai cache baca untuk setiap PVC.
Meminta penyimpanan dengan PersistentVolumeClaim (PVC)
Buat PVC yang merujuk ke StorageClass pd-balanced-data-cache-sc
yang Anda buat. PVC meminta volume persisten dengan Data Cache diaktifkan.
Gunakan manifes berikut untuk membuat PVC bernama pvc-data-cache
yang meminta
volume persisten minimal 300 GiB dengan akses ReadWriteOnce
.
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-data-cache
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 300Gi
storageClassName: pd-balanced-data-cache-sc
EOF
Membuat Deployment yang menggunakan PVC
Buat Deployment bernama postgres-data-cache
yang menjalankan Pod yang menggunakan PVC pvc-data-cache
yang Anda buat sebelumnya. Pemilih node cloud.google.com/gke-data-cache-count
memastikan bahwa Pod dijadwalkan ke node yang memiliki resource SSD Lokal
yang diperlukan untuk menggunakan GKE Data Cache.
Buat dan terapkan manifes berikut untuk mengonfigurasi Pod yang men-deploy server web Postgres menggunakan PVC:
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-data-cache
labels:
name: database
app: data-cache
spec:
replicas: 1
selector:
matchLabels:
service: postgres
app: data-cache
template:
metadata:
labels:
service: postgres
app: data-cache
spec:
nodeSelector:
cloud.google.com/gke-data-cache-disk: "1"
containers:
- name: postgres
image: postgres:14-alpine
volumeMounts:
- name: pvc-data-cache-vol
mountPath: /var/lib/postgresql/data2
subPath: postgres
env:
- name: POSTGRES_USER
value: admin
- name: POSTGRES_PASSWORD
value: password
restartPolicy: Always
volumes:
- name: pvc-data-cache-vol
persistentVolumeClaim:
claimName: pvc-data-cache
EOF
Konfirmasi bahwa Deployment berhasil dibuat:
kubectl get deployment
Mungkin perlu waktu beberapa menit agar penyiapan penampung Postgres selesai
dan menampilkan status READY
.
Memverifikasi penyediaan Cache Data
Setelah Anda membuat Deployment, pastikan penyimpanan persisten dengan Cache Data disediakan dengan benar.
Untuk memverifikasi bahwa
pvc-data-cache
Anda berhasil diikat ke volume persisten, jalankan perintah berikut:kubectl get pvc pvc-data-cache
Outputnya mirip dengan hal berikut ini:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-data-cache Bound pvc-e9238a16-437e-45d7-ad41-410c400ae018 300Gi RWO pd-balanced-data-cache-sc <unset> 10m
Untuk mengonfirmasi bahwa Grup Logical Volume Manager (LVM) untuk Cache Data telah dibuat di node, ikuti langkah-langkah berikut:
Dapatkan nama Pod driver PDCSI di node tersebut:
NODE_NAME=$(kubectl get pod --output json | jq '.items[0].spec.nodeName' | sed 's/\"//g') kubectl get po -n kube-system -o wide | grep ^pdcsi-node | grep $NODE_NAME
Dari output, salin nama Pod
pdcsi-node
.Melihat log driver PDCSI untuk pembuatan Grup LVM:
PDCSI_POD_NAME="PDCSI-NODE_POD_NAME" kubectl logs -n kube-system $PDCSI_POD_NAME gce-pd-driver | grep "Volume group creation"
Ganti
PDCSI-NODE_POD_NAME
dengan nama Pod sebenarnya yang Anda salin di langkah sebelumnya.Outputnya mirip dengan hal berikut ini:
Volume group creation succeeded for LVM_GROUP_NAME
Pesan ini mengonfirmasi bahwa konfigurasi LVM untuk Cache Data telah disiapkan dengan benar di node.
Pembersihan
Agar tidak menimbulkan biaya pada akun Trusted Cloud by S3NS Anda, hapus resource penyimpanan yang Anda buat dalam panduan ini.
Hapus Deployment.
kubectl delete deployment postgres-data-cache
Hapus PersistentVolumeClaim.
kubectl delete pvc pvc-data-cache
Hapus node pool.
gcloud container node-pools delete datacache-node-pool \ --cluster CLUSTER_NAME
Ganti
CLUSTER_NAME
dengan nama cluster tempat Anda membuat node pool yang menggunakan Cache Data.
Langkah berikutnya
- Lihat Memecahkan masalah penyimpanan di GKE.
- Baca selengkapnya tentang driver CSI Persistent Disk di GitHub.