k8s集群监控方案--node-exporter+prometheus+grafana

目录

前置条件

一、下载yaml文件

二、部署yaml各个组件

[2.1 node-exporter.yaml](#2.1 node-exporter.yaml)

[2.2 Prometheus](#2.2 Prometheus)

[2.3 grafana](#2.3 grafana)

2.4访问测试

三、grafana初始化

3.1加载数据源

3.2导入模板

四、helm方式部署


前置条件

安装好k8s集群(几个节点都可以,本人为了方便实验k8s集群只有一个master节点),注意prometheus是部署在k8s集群内部的,不同于传统监控分为监控端和被控端。

部署k8s参考教程:Linux部署单节点k8s_linux单节点安装k8s_luo_guibin的博客-CSDN博客

k8s集群环境的搭建 · 语雀

|-----------|-----------------------------------------------|
| 11.0.1.12 | k8s-master / node-exporter+prometheus+grafana |

一、下载yaml文件

链接:https://pan.baidu.com/s/1vmT0Xu7SBB36-odiCMy9zA (链接永久有效)

提取码:9999

解压

复制代码
[root@prometheus opt]# yum install -y zip unzip tree
[root@prometheus opt]# unzip k8s-prometheus-grafana-master.zip 

[root@k8s-master k8s-prometheus-grafana-master]# pwd
/opt/k8s-prometheus-grafana-master
[root@k8s-master k8s-prometheus-grafana-master]# tree
.
├── grafana
│?? ├── grafana-deploy.yaml
│?? ├── grafana-ing.yaml
│?? └── grafana-svc.yaml
├── node-exporter.yaml
├── prometheus
│?? ├── configmap.yaml
│?? ├── prometheus.deploy.yml
│?? ├── prometheus.svc.yml
│?? └── rbac-setup.yaml
└── README.md

二、部署yaml各个组件

kubectl命令tab补全

复制代码
[root@k8s-master ~]# yum install -y bash-completion
[root@k8s-master ~]# source <(kubectl completion bash)

2.1 node-exporter.yaml

复制代码
[root@k8s-master k8s-prometheus-grafana-master]# kubectl apply -f node-exporter.yaml 
daemonset.apps/node-exporter created
service/node-exporter created

#因为只有一个节点,这里如果有多个节点,节点数=node-exporterPod数
[root@k8s-master k8s-prometheus-grafana-master]# kubectl get pod -A | grep node-exporter
kube-system    node-exporter-kpdxh                  0/1     ContainerCreating      0          28s
[root@k8s-master k8s-prometheus-grafana-master]# kubectl get daemonset -A | grep exporter
kube-system    node-exporter     1         1         1       1            1           <none>                   2m43s
[root@k8s-master k8s-prometheus-grafana-master]# kubectl get service -A | grep exporter
kube-system   node-exporter   NodePort    10.96.73.86   <none>        9100:31672/TCP           2m59s

2.2 Prometheus

复制代码
[root@k8s-master prometheus]# pwd
/opt/k8s-prometheus-grafana-master/prometheus
[root@k8s-master prometheus]# ls
configmap.yaml  prometheus.deploy.yml  prometheus.svc.yml  rbac-setup.yaml

按照顺序 rbac-setup.yaml configmap.yaml prometheus.deploy.yml prometheus.svc.yml ,yaml、yml文件没区别,不用在意。

复制代码
[root@k8s-master prometheus]# kubectl apply -f rbac-setup.yaml
clusterrole.rbac.authorization.k8s.io/prometheus created
serviceaccount/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created

[root@k8s-master prometheus]# kubectl apply -f configmap.yaml
configmap/prometheus-config created

[root@k8s-master prometheus]# kubectl apply -f prometheus.deploy.yml
deployment.apps/prometheus created

[root@k8s-master prometheus]# kubectl apply -f prometheus.svc.yml
service/prometheus created

2.3 grafana

复制代码
[root@k8s-master grafana]# pwd
/opt/k8s-prometheus-grafana-master/grafana
[root@k8s-master grafana]# ls
grafana-deploy.yaml  grafana-ing.yaml  grafana-svc.yaml

按照顺序安装 grafana-deploy.yaml grafana-svc.yaml grafana-ing.yaml

复制代码
[root@k8s-master grafana]# kubectl apply -f grafana-deploy.yaml
deployment.apps/grafana-core created

[root@k8s-master grafana]# kubectl apply -f grafana-svc.yaml
service/grafana created

[root@k8s-master grafana]# kubectl apply -f grafana-ing.yaml
ingress.extensions/grafana created

检查三个pod(node-exporter可能有多个)

复制代码
[root@k8s-master grafana]# kubectl get pod -A | grep node-exporter
kube-system    node-exporter-kpdxh                  1/1     Running                0          13m

[root@k8s-master grafana]# kubectl get pod -A | grep prometheus
kube-system    prometheus-7486bf7f4b-xb4t8          1/1     Running                0          6m21s

[root@k8s-master grafana]# kubectl get pod -A | grep grafana
kube-system    grafana-core-664b68875b-fhjvt        1/1     Running                0          2m18s

检查服务service,三个svc类型均为NodePort

复制代码
[root@k8s-master grafana]# kubectl get svc -A
NAMESPACE     NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP                  7h17m
kube-system   grafana         NodePort    10.107.115.11   <none>        3000:31748/TCP           3m41s
kube-system   kube-dns        ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   7h17m
kube-system   node-exporter   NodePort    10.96.73.86     <none>        9100:31672/TCP           15m
kube-system   prometheus      NodePort    10.111.178.83   <none>        9090:30003/TCP           7m57s

2.4访问测试

curl访问测试

复制代码
[root@k8s-master grafana]# curl 127.0.0.1:31672
<html lang="en">
......

#node-exporter收集到的数据
[root@k8s-master grafana]# curl 127.0.0.1:31672/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.

[root@k8s-master grafana]# curl 127.0.0.1:30003
<a href="/graph">Found</a>.

[root@k8s-master grafana]# curl 127.0.0.1:31748
<a href="/login">Found</a>.

访问11.0.1.12:31672/metrics,node-exporter收集到的数据

访问11.0.1.12:30003/graph

选择 "status"--"targets"

三、grafana初始化

访问11.0.1.12:31748/login

账号密码都是admin

3.1加载数据源

监听地址 10.111.178.83:9090,prometheus的service地址

复制代码
[root@k8s-master grafana]# kubectl get svc -A | grep prometheus
kube-system   prometheus      NodePort    10.111.178.83   <none>        9090:30003/TCP           40m

3.2导入模板

模板编号315

选择数据源prometheus

完成监控

四、helm方式部署

......(待更新)

相关推荐
谢亮_vipxieliang5 小时前
Kubernetes 的“操作系统化”:从容器编排到 AI 基础设施控制平面
人工智能·平面·kubernetes
sbjdhjd8 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
热爱Liunx的丘丘人8 小时前
1、什么是K8s
云原生·容器·kubernetes
小匠石钧知16 小时前
07_在k8s集群中安装ingress-nginx
nginx·容器·kubernetes·ingress
龙腾-虎跃18 小时前
Docker 一键启动服务合集:Redis、MySQL、Kafka、MinIO、Prometheus 等(网盘转存防失效)
redis·mysql·docker·kafka·prometheus·小龙虾·miniio
谢亮_vipxieliang1 天前
Kubernetes 1.36 深度解读:从 kubelet 安全到 GPU 原生调度的 70 项改进
安全·kubernetes·kubelet
wzq11_6661 天前
kubernetes集群——灰度发布
云原生·容器·kubernetes
Duang007_2 天前
生产可观测性:从“系统慢“到“根因“的完整链路(Go / TypeScript)
后端·python·golang·typescript·prometheus
vipxieliang2 天前
Kubernetes 的“操作系统化”:从容器编排到 AI 基础设施控制平面
kubernetes
JWASX2 天前
go 学习 - prometheus 指标学习
学习·golang·prometheus