在本教程中,我們將介紹如何在 Kubernetes (K8s) 叢集上設定 MySQL,以及如何整合 Prometheus 和 Grafana 進行監控。我們將使用適用於 MySQL、Prometheus 和 Grafana 的 Bitnami Helm 圖表,並向您展示如何建立自訂 Grafana 儀表板來監控 MySQL。
首先,建立一個 Kubernetes 命名空間,您將在其中部署 MySQL 和監控元件。
kubectl create namespace my-lab
要驗證命名空間的創建,請執行:
kubectl get namespaces
這應該將 my-lab 列為叢集中的命名空間之一。
我們將使用 Bitnami Helm 圖表在 my-lab 命名空間中安裝 MySQL。如果您尚未新增 Bitnami 圖表儲存庫,請使用下列指令新增:
helm repo add bitnami https://charts.bitnami.com/bitnami
現在,使用以下指令安裝 MySQL:
helm upgrade --install mysql bitnami/mysql --namespace my-lab
要檢查狀態並確保 MySQL 正在運行,請使用:
kubectl get pods --namespace my-lab
要連接到 MySQL,首先,您需要從 Kubernetes 金鑰中檢索 MySQL 密碼。使用此指令取得秘密:
kubectl get secret -n my-lab
然後如下解碼 mysql-root-password 和 mysql-password:
kubectl get secret/mysql -oyaml -n my-lab
您可以使用base64解碼密碼:
echo <encoded-password> | base64 -d
現在,使用 kubectl exec 存取 MySQL pod:
kubectl exec -it mysql-0 --namespace my-lab -- /bin/bash
進入 Pod 後,使用 root 密碼連接到 MySQL:
mysql -u root -p
出現提示時輸入解碼後的 root 密碼。
建立資料庫和一些表格
進入 MySQL 後,建立一個資料庫和一些要監視的表:
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;
接下來,我們將安裝Prometheus和Grafana來監控MySQL。
安裝 Prometheus 和 Grafana
首先加入Prometheus社群Helm圖表:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
建立grafana命名空間:
kubectl create ns grafana
現在,使用 Helm 安裝 Prometheus-Grafana 堆疊:
helm upgrade --install grafana prometheus-community/kube-prometheus-stack --namespace grafana
您可以透過檢查 pod 來驗證安裝:
kubectl get pods -n grafana
使用 LoadBalancer 公開 MySQL
要從 Kubernetes 叢集外部存取 MySQL,我們需要使用 LoadBalancer 公開 MySQL 服務。編輯 MySQL 服務:
kubectl edit svc/mysql -n my-lab
將服務類型從 ClusterIP 變更為 LoadBalancer:
spec: type: LoadBalancer
驗證外部IP已分配:
kubectl get svc -n my-lab
如果您使用 Minikube,您可能需要執行 minikube 隧道以將服務公開至外部:
minikube tunnel
現在,使用分配的IP從外部存取MySQL:
kubectl create namespace my-lab
我們需要安裝 MySQL Exporter 來收集 MySQL 指標並將其公開給 Prometheus 進行抓取。
建立導出器配置
使用您的 MySQL 連線詳細資料建立檔案 mysql-exporter-values.yaml:
kubectl get namespaces
現在,使用 Helm 安裝 MySQL 導出器:
helm repo add bitnami https://charts.bitnami.com/bitnami
連接埠轉送 Prometheus MySQL 導出器
要將 MySQL 導出器指標轉送到本機進行測試,請使用:
helm upgrade --install mysql bitnami/mysql --namespace my-lab
透過造訪 http://localhost:9104/metrics 驗證指標是否公開。
現在 Prometheus 和 MySQL 導出器已經設定完畢,讓我們將 Grafana 連接到 Prometheus。
連接埠轉送 Grafana
要存取 Grafana 儀表板,請執行下列連接埠轉送指令:
kubectl get pods --namespace my-lab
這將使 Grafana 透過 http://localhost:3000 存取。預設登入憑證是:
使用者名稱:admin
密碼:舞會操作員
登入後,在 Grafana 中加入 Prometheus 作為資料來源:
前往設定>;資料來源。
使用 URL http://prometheus-operated:9090 新增 Prometheus 作為資料來源。
要監控 MySQL,我們可以從 Grafana 的儀表板儲存庫匯入預先設定的儀表板。
導入儀表板
前往儀表板>;匯入並輸入以下儀表板 ID:
儀表板 ID 14057(MySQL 概述)
儀表板 ID 7362(MySQL 效能)
這些儀表板將自動載入並顯示相關的 MySQL 指標,例如連線、查詢和資源利用率。
您已成功在 Kubernetes 中設定 MySQL 並整合 Prometheus 和 Grafana 進行監控。現在您可以使用 Grafana 儀表板即時監控您的 MySQL 實例。
重點:
透過此設置,您可以輕鬆擴展和監控 Kubernetes 上的資料庫基礎架構。
以上是使用 Prometheus 和 Grafana 監控在 Kubernetes 上設定 MySQL的詳細內容。更多資訊請關注PHP中文網其他相關文章!