gongdear

gongdear的技术博客

欢迎大家参观我的博客
  menu
103 文章
89355 浏览
0 当前访客
ღゝ◡╹)ノ❤️

k8s集群中安装Prometheus监控和Grafana

一: 组件说明

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>

至此就可以使用域名访问服务了

image.png

image.png

在grafana界面可以看到prometheus已经自动添加进去,并且使用内部服务域名的方式。

宝剑锋从磨砺出,梅花香自苦寒来.