Dalam tutorial ini, kami akan membincangkan cara menyediakan MySQL pada kelompok Kubernetes (K8s), bersama-sama dengan menyepadukan Prometheus dan Grafana untuk pemantauan. Kami akan menggunakan carta Bitnami Helm untuk MySQL, Prometheus dan Grafana dan menunjukkan kepada anda cara membuat papan pemuka Grafana tersuai untuk memantau MySQL.
Mula-mula, buat ruang nama Kubernetes di mana anda akan menggunakan MySQL dan komponen pemantauan anda.
kubectl create namespace my-lab
Untuk mengesahkan penciptaan ruang nama, jalankan:
kubectl get namespaces
Ini sepatutnya menyenaraikan makmal saya sebagai salah satu ruang nama dalam kelompok anda.
Kami akan menggunakan carta Helm Bitnami untuk memasang MySQL dalam ruang nama makmal saya. Jika anda belum menambah repositori carta Bitnami lagi, lakukan dengan arahan berikut:
helm repo add bitnami https://charts.bitnami.com/bitnami
Sekarang, pasang MySQL dengan arahan ini:
helm upgrade --install mysql bitnami/mysql --namespace my-lab
Untuk menyemak status dan memastikan MySQL berjalan, gunakan:
kubectl get pods --namespace my-lab
Untuk menyambung ke MySQL, pertama sekali, anda perlu mendapatkan semula kata laluan MySQL daripada rahsia Kubernetes. Gunakan arahan ini untuk mendapatkan rahsia:
kubectl get secret -n my-lab
Kemudian nyahkod mysql-root-password dan mysql-password seperti berikut:
kubectl get secret/mysql -oyaml -n my-lab
Anda boleh menyahkod kata laluan menggunakan base64:
echo <encoded-password> | base64 -d
Sekarang, akses pod MySQL menggunakan kubectl exec:
kubectl exec -it mysql-0 --namespace my-lab -- /bin/bash
Sebaik sahaja di dalam pod, sambung ke MySQL menggunakan kata laluan akar:
mysql -u root -p
Masukkan kata laluan akar yang dinyahkodkan apabila digesa.
Buat Pangkalan Data dan Beberapa Jadual
Sebaik sahaja di dalam MySQL, cipta pangkalan data dan beberapa jadual untuk dipantau:
create database my_db_1; use my_db_1; create table my_table_1 (a varchar(100)); create table my_table_2 (a varchar(100)); create table my_table_3 (a varchar(100)); insert into my_table_1 values('One'); insert into my_table_1 values('One-One'); select * from my_table_1;
Seterusnya, kami akan memasang Prometheus dan Grafana untuk memantau MySQL.
Pasang Prometheus dan Grafana
Pertama, tambahkan carta Helm komuniti Prometheus:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
Buat ruang nama grafana:
kubectl create ns grafana
Sekarang, pasangkan timbunan Prometheus-Grafana menggunakan Helm:
helm upgrade --install grafana prometheus-community/kube-prometheus-stack --namespace grafana
Anda boleh mengesahkan pemasangan dengan menyemak pod:
kubectl get pods -n grafana
Dedahkan MySQL dengan LoadBalancer
Untuk mengakses MySQL dari luar kelompok Kubernetes, kita perlu mendedahkan perkhidmatan MySQL menggunakan LoadBalancer. Edit perkhidmatan MySQL:
kubectl edit svc/mysql -n my-lab
Tukar jenis perkhidmatan daripada ClusterIP kepada LoadBalancer:
spec: type: LoadBalancer
Sahkan IP luaran telah diberikan:
kubectl get svc -n my-lab
Jika anda menggunakan Minikube, anda mungkin perlu menjalankan terowong minikube untuk mendedahkan perkhidmatan secara luaran:
minikube tunnel
Sekarang, akses MySQL secara luaran menggunakan IP yang diberikan:
kubectl create namespace my-lab
Kami perlu memasang Pengeksport MySQL untuk mengumpulkan metrik MySQL dan mendedahkannya kepada Prometheus untuk mengikis.
Buat Konfigurasi Pengeksport
Buat fail mysql-exporter-values.yaml dengan butiran sambungan MySQL anda:
kubectl get namespaces
Sekarang, pasang pengeksport MySQL menggunakan Helm:
helm repo add bitnami https://charts.bitnami.com/bitnami
Pengeksport MySQL Port-Forward Prometheus
Untuk memajukan metrik pengeksport MySQL ke mesin tempatan anda untuk ujian, gunakan:
helm upgrade --install mysql bitnami/mysql --namespace my-lab
Sahkan metrik sedang didedahkan dengan melawati http://localhost:9104/metrics.
Sekarang Prometheus dan pengeksport MySQL telah disediakan, mari sambungkan Grafana ke Prometheus.
Port-Forward Grafana
Untuk mengakses papan pemuka Grafana, jalankan arahan port-forward berikut:
kubectl get pods --namespace my-lab
Ini akan menjadikan Grafana boleh diakses di http://localhost:3000. Bukti kelayakan log masuk lalai ialah:
Nama pengguna: admin
Kata laluan: prom-operator
Setelah log masuk, tambah Prometheus sebagai sumber data dalam Grafana:
Pergi ke Konfigurasi > Sumber Data.
Tambahkan Prometheus sebagai sumber data dengan URL http://prometheus-operated:9090.
Untuk memantau MySQL, kami boleh mengimport papan pemuka prakonfigurasi daripada repositori papan pemuka Grafana.
Import Papan Pemuka
Pergi ke Papan Pemuka > Import dan masukkan ID papan pemuka berikut:
ID Papan Pemuka 14057 (Gambaran Keseluruhan MySQL)
ID Papan Pemuka 7362 (Prestasi MySQL)
Papan pemuka ini akan dimuatkan secara automatik dan menunjukkan metrik MySQL yang berkaitan, seperti sambungan, pertanyaan dan penggunaan sumber.
Anda telah berjaya menyediakan MySQL dalam Kubernetes dan menyepadukan Prometheus dan Grafana untuk pemantauan. Anda kini boleh memantau tika MySQL anda dalam masa nyata menggunakan papan pemuka Grafana.
Pengambilan Utama:
Dengan persediaan ini, anda boleh menskala dan memantau infrastruktur pangkalan data anda dengan mudah di Kubernetes.
Atas ialah kandungan terperinci Menyediakan MySQL pada Kubernetes dengan Pemantauan Prometheus & Grafana. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!