# cat grafana-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: kube-system
labels:
app: grafana
component: core
spec:
type: NodePort
ports:
- port: 3000
selector:
app: grafana
component: core
3、grafana ingress配置文件
# cat grafana-ing.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: grafana
namespace: kube-system
spec:
rules:
- host: k8s.grafana
http:
paths:
- path: /
backend:
serviceName: grafana
servicePort: 3000
通过访问traefik的webui可以看到k8s.grafana服务发布成功
修改hosts解析,访问测试
也可以直接访问nodeport端口
默认用户名和密码都是admin
配置数据源为prometheus
导入面板,可以直接输入模板编号315在线导入,或者下载好对应的json模板文件本地导入,面板模板下载地址https://grafana.com/dashboards/315
导入面板之后就可以看到对应的监控数据了。
这里要说明一下,在测试过程中,导入编号为162的模板,发现只有部分数据,且pod的名称显示不友好。模板地址https://grafana.com/dashboards/162,详见下图。
六、后记
这里存在一些问题后续要继续研究解决。
1、prometheus的数据存储采用emptydir。如果Pod被删除,或者Pod发生迁移,emptyDir也会被删除,并且永久丢失。后续可以在K8S集群外部再配置一个Prometheus系统来永久保存监控数据, 两个prometheus系统之间通过配置job自动进行数据拉取。
2、Grafana的配置数据存储采用emptydir。如果Pod被删除,或者Pod发生迁移,emptyDir也会被删除,并且永久丢失。我们也可以选择将grafana配置在k8s外部,数据源选择K8S集群外部的prometheus即可。
3、关于监控项的报警(alertmanager)尚未配置。