一: 组件说明
1.1 相关地址信息
Prometheus
github 地址:https://github.com/coreos/kube-prometheus
1.2 组件说明
1.MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如 kubectl,hpa,scheduler等。
2.PrometheusOperator:是一个系统监测和警报工具箱,用来存储监控数据。
3.NodeExporter:用于各node的关键度量指标状态数据。
4.KubeStateMetrics:收集kubernetes集群内资源对象数据,制定告警规则。
5.Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输。
6.Grafana:是可视化数据统计和监控平台。
二: Prometheus和Grafana的部署
mkdir Prometheus
cd Prometheus
git clone https://github.com/coreos/kube-prometheus.git
可以修改service为nodeport方式暴露服务,我这里继续采用ingress方式,所以原始服务配置文件不需要任何修改。
kubectl apply -f kube-prometheus/manifests/
第一次执行会有一部分报错,此时可以先去部署setup目录中的配置
kubectl apply -f kube-prometheus/manifests/setup/
然后再次
kubectl apply -f kube-prometheus/manifests/
所有服务都成功后等镜像都拉取完毕,此时编写ingress配置
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: prometheus-ingress
namespace: monitoring
annotations:
kubernets.io/ingress.class: "nginx"
spec:
rules:
- host: prometheus.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: prometheus-k8s
servicePort: 9090
- host: grafana.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: grafana
servicePort: 3000
此处同样需要在外部将域名解析至master地址
[root@master1 prometheus]# kubectl describe ingress -n monitoring
Name: prometheus-ingress
Namespace: monitoring
Address: 10.26.1.76
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
prometheus.example.com
/ prometheus-k8s:9090 (10.122.196.29:9090,10.122.38.210:9090)
grafana.example.com
/ grafana:3000 (10.122.196.33:3000)
Annotations: kubernets.io/ingress.class: nginx
Events: <none>
至此就可以使用域名访问服务了
在grafana界面可以看到prometheus已经自动添加进去,并且使用内部服务域名的方式。
宝剑锋从磨砺出,梅花香自苦寒来.