Operator Ketersediaan Tinggi (HA) Stateful memungkinkan Anda menggunakan integrasi bawaan GKE dengan Persistent Disk regional untuk mengotomatiskan dan mengontrol kecepatan failover Pod StatefulSet. Selama failover, operator secara otomatis menangani deteksi kegagalan node, melepaskan volume dari node yang gagal, dan memastikan pemasangan volume yang aman ke node failover.
Alasan menggunakan Operator HA Stateful
Arsitektur stateful umum untuk mencapai ketersediaan tinggi menggunakan Persistent Disk regional sebagai lapisan penyimpanan. Disk ini menyediakan replikasi data sinkron antara dua zona di satu region. Selama kegagalan jaringan node atau zona, arsitektur ini memungkinkan workload Anda melakukan failover (dengan pemasangan paksa) replika ke penyimpanan di node lain di zona yang berbeda.
Operator HA Stateful memungkinkan Anda melakukan pengoptimalan berikut:
- Meningkatkan waktu pemulihan aplikasi replika tunggal: Jika hanya menggunakan satu replika, Anda dapat menggunakan Operator HA Stateful dan menukar penyimpanan zona dengan penyimpanan regional saat aplikasi Anda disediakan, untuk meningkatkan ketahanan dan ketersediaan data jika terjadi kegagalan node.
- Mengurangi biaya jaringan lintas zona: Mereplikasi data di beberapa zona dapat menimbulkan biaya yang besar untuk aplikasi dengan throughput tinggi. Anda dapat menggunakan Operator HA Stateful untuk menjalankan aplikasi di satu zona, sambil mempertahankan jalur failover ke zona alternatif yang sesuai dengan SLA aplikasi Anda.
Batasan
- Jenis volume
gcePersistentDisk
tidak didukung. Gunakan
PersistentVolumeyang menggunakan driver CSI persistent disk. - Dengan arsitektur Operator HA Stateful replika tunggal, GKE mempertahankan data Anda di dua zona melalui Persistent Disk regional, tetapi data hanya dapat diakses saat replika aplikasi Anda dalam kondisi baik. Selama failover, aplikasi Anda akan tidak tersedia untuk sementara saat replika Anda dijadwalkan ulang ke node baru yang dalam kondisi baik. Jika aplikasi Anda memiliki target waktu pemulihan (RTO) yang sangat rendah, sebaiknya gunakan pendekatan multi-replika.
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 perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
Persyaratan
- Saat Anda menggunakan Operator HA Stateful, operator ini akan otomatis mengonfigurasi StatefulSet tertaut untuk menggunakan Persistent Disk regional. Namun, Anda bertanggung jawab untuk memastikan bahwa Pod dikonfigurasi untuk menggunakan disk ini, dan dapat berjalan di semua zona yang terkait dengan penyimpanan yang mendasarinya.
- Pastikan aplikasi Anda berjalan pada bentuk mesin yang didukung Persistent Disk regional: E2, N1, N2, N2D.
- Pastikan driver CSI Persistent Disk Compute Engine diaktifkan. Driver CSI Persistent Disk diaktifkan secara default pada cluster Autopilot dan Standard baru dan tidak dapat dinonaktifkan atau diedit saat menggunakan Autopilot. Jika Anda perlu menambahkan driver CSI Persistent Disk secara manual dari cluster, lihat Mengaktifkan driver CSI Persistent Disk di cluster yang ada.
- Jika Anda menggunakan StorageClass kustom, konfigurasi driver CSI Persistent Disk dengan penyedia
pd.csi.storage.gke.iodan parameter berikut:availability-class: regional-hard-failoverreplication-type: regional-pd
Menyiapkan dan menggunakan Operator HA Stateful
Ikuti langkah-langkah berikut untuk menyiapkan Operator HA Stateful untuk workload stateful Anda:
- Aktifkan add-on
StatefulHA. - Instal resource HighAvailabilityApplication.
- Instal StatefulSet.
- Periksa resource HighAvailabilityApplication.
Mengaktifkan add-on StatefulHA
Untuk menggunakan Operator HA Stateful, add-on StatefulHA harus diaktifkan di cluster Anda.
Cluster Autopilot: GKE otomatis mengaktifkan add-on
StatefulHAsaat pembuatan cluster. Jika ingin menggunakan Operator HA Stateful pada workload yang ada, Anda harus mengaktifkan Driver CSI Persistent Disk Compute Engine secara manual. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan driver CSI Persistent Disk di cluster yang ada.Cluster Standar:
- Pembuatan cluster baru: Ikuti petunjuk gcloud CLI
untuk membuat cluster Standar
dan menambahkan
flag berikut:
--add-on=StatefulHA. - Cluster Standar yang ada: Ikuti petunjuk gcloud CLI
untuk memperbarui setelan cluster Standar, dan gunakan flag berikut untuk mengaktifkan
add-on:
--update-addons=StatefulHA=ENABLED`.
- Pembuatan cluster baru: Ikuti petunjuk gcloud CLI
untuk membuat cluster Standar
dan menambahkan
flag berikut:
GKE otomatis menginstal StorageClass bernama standard-rwo-regional untuk Anda saat add-on diaktifkan.
Menginstal resource HighAvailabilityApplication
HighAvailabilityApplication adalah resource Kubernetes yang menyederhanakan setelan StatefulSet dan meningkatkan ketersediaan Pod di GKE.
Operator HA Stateful merekonsiliasi resource HighAvailabilityApplication di GKE.
Dalam spesifikasi HighAvailabilityApplication, Anda harus menetapkan
HighAvailabilityApplication.spec.resourceSelection.resourceKind ke
StatefulSet.
Untuk mempelajari cara mengonfigurasi resource HighAvailability, lihat HighAvailabilityApplication dokumentasi referensi.
Lihat contoh berikut untuk PostgreSQL:
Simpan manifes berikut dalam file bernama
stateful-ha-example-resource.yaml:kind: HighAvailabilityApplication apiVersion: ha.gke.io/v1 metadata: name: APP_NAME namespace: APP_NAMESPACE spec: resourceSelection: resourceKind: StatefulSet policy: storageSettings: requireRegionalStorage: true failoverSettings: forceDeleteStrategy: AfterNodeUnreachable afterNodeUnreachable: afterNodeUnreachableSeconds: 20Ganti kode berikut:
- APP_NAME: nama aplikasi di cluster Anda yang ingin dilindungi. Nama ini harus dibagikan oleh HighAvailabilityApplication dan StatefulSet.
- APP_NAMESPACE: namespace aplikasi. Namespace ini harus dibagikan oleh HighAvailabilityApplication dan StatefulSet yang dilindungi.
Dalam contoh ini:
HighAvailabilityApplication.spec.policy.storageSettings.requireRegionalSettingsdisetel ketrue. Tindakan ini akan menerapkan penyimpanan regional.HighAvailabilityApplication.spec.policy.failoverSettingsdisetel keAfterNodeUnreachable. Tindakan ini menentukan cara penghapusan paksa dipicu saat terjadi kegagalan node.HighAvailabilityApplication.spec.policy.failoverSettings.afterNodeUnreachabledisetel ke 20. Ini adalah waktu tunggu untuk menghapus Pod secara paksa setelah node tempat Pod berjalan ditandai sebagai tidak dapat dijangkau.
Buat resource. Resource
HighAvailabilityApplicationmengidentifikasi StatefulSet dengan namespace dan nama yang cocok.kubectl apply -f stateful-ha-example-resource.yaml
Menginstal StatefulSet
Instal StatefulSet. Misalnya, Anda dapat menginstal PostgreSQL StatefulSet menggunakan Helm (Helm sudah diinstal sebelumnya dengan Cloud Shell):
helm install postgresql oci://registry-1.docker.io/bitnamicharts/postgresql \
--namespace=APP_NAMESPACE \
--set fullnameOverride=APP_NAME
Resource HighAvailabilityApplication otomatis mengubah StorageClass StatefulSet menjadi standard-rwo-regional, yang menggunakan Persistent Disk regional.
Memeriksa resource HighAvailabilityApplication
Jalankan perintah berikut untuk memverifikasi bahwa aplikasi contoh telah mengaktifkan failover otomatis:
kubectl describe highavailabilityapplication APP_NAME
Output-nya akan terlihat seperti berikut:
Status:
Conditions:
Last Transition Time: 2023-08-09T23:59:52Z
Message: Application is protected
Observed Generation: 1
Reason: ApplicationProtected
Status: True
Type: Protected
Menggunakan Persistent Disk yang ada
Jika Anda menggunakan Persistent Disk yang ada dan PersistentVolume yang ditentukan secara statis, konfigurasi PersistentVolume dengan force-attach: true di .spec.csi.volumeAttributes. Contoh:
apiVersion: v1
kind: PersistentVolume
metadata:
name: PV_NAME
spec:
storageClassName: "STORAGE_CLASS_NAME"
capacity:
storage: DISK_SIZE
accessModes:
- ReadWriteOnce
claimRef:
name: PV_CLAIM_NAME
namespace: default
csi:
driver: pd.csi.storage.gke.io
volumeHandle: DISK_ID
fsType: FS_TYPE
volumeAttributes:
force-attach: true