Ketersediaan tinggi sangat penting untuk aplikasi terdistribusi. Di Kluster ACK Serverless, Anda dapat memanfaatkan semantik penjadwalan native Kubernetes untuk menyebarkan aplikasi terdistribusi ke beberapa zona guna mencapai penerapan berketersediaan tinggi. Dokumen ini menjelaskan cara menerapkan kluster MySQL stateful dengan ketersediaan tinggi di ACK Serverless.
Prasyarat
Kluster ACK Serverless yang berisi beberapa node virtual telah dibuat. Untuk informasi selengkapnya, lihat Create an ACK Serverless cluster.
Kebijakan penjadwalan node virtual telah diaktifkan. Untuk informasi selengkapnya, lihat Enable virtual node scheduling policies for a cluster.
Komponen csi-provisioner versi v1.22.9 atau yang lebih baru telah dipasang.
Langkah 1: Tarik file YAML dari GitHub untuk membuat sumber daya Kubernetes
Jalankan perintah berikut untuk mengkloning repositori kode.
git clone https://github.com/AliyunContainerService/serverless-k8s-examples.gitJalankan perintah berikut untuk masuk ke direktori kerja dan melihat daftar file YAML.
cd serverless-k8s-examples/stateful-mysql ls -alOutput yang diharapkan:
README.md secret.yaml stateful-mysql.yaml storageclass.yamlFile
secret.yamldigunakan untuk membuat Secret, filestorageclass.yamldigunakan untuk membuat StorageClass, dan filestateful-mysql.yamldigunakan untuk membuat StatefulSet MySQL.
Langkah 2: Buat namespace, Secret, dan StorageClass
Jalankan perintah berikut untuk membuat namespace
mysql.kubectl create namespace mysqlOutput yang diharapkan:
namespace/mysql createdJalankan perintah berikut untuk membuat Secret guna menyimpan password MySQL.
kubectl apply -n mysql -f secret.yamlOutput yang diharapkan:
secret/mysql-secret createdBerikut adalah file YAML untuk Secret tersebut.
Jalankan perintah berikut untuk membuat StorageClass.
kubectl apply -f storageclass.yamlOutput yang diharapkan:
storageclass.storage.k8s.io/fast-storageclass createdBerikut adalah file YAML untuk StorageClass tersebut.
Langkah 3: Konfigurasikan penyebaran topologi Pod dan buat StatefulSet MySQL
Jalankan perintah berikut untuk membuat StatefulSet MySQL. Contoh ini membuat StatefulSet yang tersebar merata di beberapa zona dengan mengonfigurasi batasan penyebaran topologi Pod untuk node virtual. Untuk informasi selengkapnya tentang cara menyebarkan Pod di beberapa zona pada node virtual, lihat Spread pods on virtual nodes across zones and configure affinity.
kubectl apply -n mysql -f stateful-mysql.yamlOutput yang diharapkan:
statefulset.apps/dbc1 createdBerikut adalah file YAML untuk StatefulSet tersebut.
Langkah 4: Verifikasi penerapan Pod di kluster MySQL
Jalankan perintah berikut untuk memverifikasi bahwa StatefulSet telah dibuat.
kubectl get statefulset -n mysqlOutput yang diharapkan:
NAME READY AGE dbc1 3/3 7m21sJalankan perintah berikut untuk melihat detail Pod.
kubectl -n mysql get po -o wideOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES dbc1-0 1/1 Running 0 2m28s 10.1.214.213 virtual-kubelet-cn-hangzhou-j <none> <none> dbc1-1 1/1 Running 0 106s 10.3.146.113 virtual-kubelet-cn-hangzhou-h <none> <none> dbc1-2 1/1 Running 0 64s 10.4.232.78 virtual-kubelet-cn-hangzhou-g <none> <none>Kolom `NODE` menunjukkan node tempat setiap Pod diterapkan. Nama node tersebut berisi informasi zona, yang menunjukkan bahwa Pod tersebar di zona yang berbeda.