之前有写过对于传统项目的性能测试监控,但是对于目前市场占比已经很低,大部分项目使用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/1vnUcoEVBy3hQVdpwyqjs6w
提取码:qawq

最新文章

  1. (转)Doxygen文档生成工具
  2. 数据格式json讲解
  3. 网络编程3--毕向东java基础教程视频学习笔记
  4. input内强制保留小数点后两位 位数不足时自动补0
  5. Web API路由
  6. 创建与删除SQL约束或字段约束
  7. 将Nagios监控信息存入Mysql
  8. Python之mongodb操作
  9. MongoDB 权限认证
  10. [R] Draw a wordcloud
  11. AsyncTask 解析
  12. ASP.NET网页抓取数据
  13. [Linked List]Copy List with Random Pointer
  14. logback自定义格式转换器
  15. Javaweb 第5天 mysql 数据库课程
  16. vs2015数据驱动的单元测试
  17. 闲来无事,把node又拾起来看看
  18. windows service编程
  19. linux shell编程语句if、case.
  20. yii批量插入的方法

热门文章

  1. 冲刺Day4
  2. 移动端web网页meta设置
  3. 大白话详解大数据hive知识点,老刘真的很用心(2)
  4. 抖音数据采集SDK
  5. uniapp图片转base64
  6. C#9.0新特性详解系列之六:增强的模式匹配
  7. SQL盲注、SQL注入 - SpringBoot配置SQL注入过滤器
  8. IDEA创建maven项目很慢的问题解决方式
  9. 什么是babel
  10. SpringBoot执行原理