對於k8s微服務的效能測試監控平臺搭建
阿新 • • 發佈:2021-01-13
之前有寫過對於傳統專案的效能測試監控,但是對於目前市場佔比已經很低,大部分專案使用k8s,今天講一下對於k8s如何去監控。
對於k8s的監控我們所有的操作都要在master下進行。
一、部署grafana
作者會提供一個grafana的yaml檔案,對於檔案進行適配專案的修改即可
1、修改配置檔案
spec: containers: - name: grafana
#映象版本號 image: grafana/grafana:7.2.1 ports: - containerPort: 3000 env: - name: GF_SECURITY_ADMIN_USER
# 登入賬號 value: admin - name: GF_SECURITY_ADMIN_PASSWORD
#登入密碼 value: admin123 volumeMounts: - mountPath: /var/lib/grafana/abc name: storage volumes: - name: storage nfs:
#master的 ipv4地址 server: 192.0.0.1 path: /root/nfs-share
2、部署grafana
建立garafana pod
kubectl create -f /root/k8s/node_exporter.yaml
二、部署mysql_exporter
由於mysql_exporter是對mysql資料庫進行監控,我們需要把mysql_exporter和mysql資料庫打包在一個pod中,所以要對專案原有的mysql yaml檔案進行update
- name: mysql-exporter env: - name: DATA_SOURCE_NAME
# 資料庫賬號:密碼@(地址:埠) value: root:123@(127.0.0.1:3306)/ image: prom/mysqld-exporter imagePullPolicy: Always name: mysql-exporter ports: - containerPort: 9104 protocol: TCP volumes: - name: mysql-data nfs:
#修改為master的ipv4地址 server: 192.168.19.133 path: /root/nfs-share --- apiVersion: v1 kind: Service metadata: name: mysql labels: name: mysql spec: type: NodePort ports: - port: 3306 nodePort: 30306 targetPort: 3306 name: mysql - port: 9104 protocol: TCP targetPort: 9104 nodePort: 30304 name: mysql-exporter selector: name: mysql
上面的為新增內容(有部分會與當前已有的重複),新增後重建pod。
如果有多個節點請在replicas : 後面增加節點數
三、部署node_exporter
apiVersion: apps/v1
# DaemonSet 方式會在所有繫結master的節點下安裝 kind: DaemonSet metadata: name: node-exporter namespace: kube-system labels: k8s-app: node-exporter spec: selector: matchLabels: k8s-app: node-exporter template: metadata: labels: k8s-app: node-exporter spec: containers: - image: prom/node-exporter name: node-exporter ports: - containerPort: 9100 protocol: TCP name: http --- apiVersion: v1 kind: Service metadata: labels: k8s-app: node-exporter name: node-exporter namespace: kube-system spec: ports: - name: http port: 9100 nodePort: 31672 protocol: TCP type: NodePort selector: k8s-app: node-exporter
建立node_exporter pod:
kubectl create -f /root/k8s/node_exporter.yaml
四、部署Prometheus
1.修改configmap.yaml檔案
- job_name: k8s-nodes static_configs: - targets:
- 192.168.1.180:31672
# master 節點ip - 192.168.1.181:31672
# node1 節點ip - 192.168.1.182:31672
# node2 節點ip - job_name: mysql static_configs: - targets: - 192.168.1.180:30304
# master 節點ip
2.訪問prometheus,http://ip:30003/targets
3.訪問grafana並配置http://ip:31000/login,使用者名稱和密碼為建立pod時設定的賬號密碼。
4.配置Prometheus資料來源 http://ip:30003
30003埠是在配置檔案prometheus.svc.yml中配置
匯入模板後的效果給大家看一下:
五、新增節點監控操作
如果叢集中新增一個節點,此時我們的監控已經完成,我們應該如何去操作
1.當一個新的節點新增到叢集中,node_exporter會自動在新的節點下建立一個pod,所以這裡不需要額外操作
2.需要對Prometheus的配置檔案進行uodate:
修改配置檔案configmap.yaml:
- job_name: k8s-nodes static_configs: - targets: - 192.168.1.180:31672 - 192.168.1.181:31672 - 192.168.1.182:31672 # 增加新的節點地址 - 192.168.1.183:31672
然後執行下面的操作:
kubectl replace -f configmap.yaml #替換配置檔案 kubectl delete -f prometheus.deploy.yml#刪除服務 kubectl create -f prometheus.deploy.yml #重建服務
此時,新的節點監控新增完成
文章中提到的所有yaml檔案分享在下面地址中,可以自行下載,如果需要監控模板可以傳送私信索要,如果還不清楚如何匯入模板可以檢視歷史隨筆。
連結:https://pan.baidu.com/s/17wV1m1fQK8oA4R92bPDeqg
提取碼:1jbk
&n