對於k8s微服務的性能測試監控平台搭建
之前有寫過對於傳統項目的性能測試監控,但是對於目前市場佔比已經很低,大部分項目使用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,//ip:30003/targets
3.訪問grafana並配置//ip:31000/login,用戶名和密碼為創建pod時設置的賬號密碼。
4.配置Prometheus數據源 //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文件分享在下面地址中,可以自行下載,如果需要監控模板可以發送私信索要,如果還不清楚如何導入模板可以查看歷史隨筆。
鏈接://pan.baidu.com/s/17wV1m1fQK8oA4R92bPDeqg
提取碼:1jbk