Try   HackMD

Install Prometheus and Grafana on Kubenetes cluster

tags: Kubernetes

You can find the code from charlie6679/k8s-prometheus

Step 1 Install node-expoter

create a namespace "monitoring"

kubectl apply -f prometheus-ns.yml

create node-exporter daemonset

kubectl apply -f node-exporter-daemonset.yml

create node-exporter service

kubectl apply -f node-exporter-service.yml

Now you can visit <node_ip>:9100 to check.

Step 2 Install kube-state-metrics

create ServiceAccount

kubectl apply -f kube-state-metrics-ServiceAccount.yml

create kube-state-metrics deployment

kubectl apply -f kube-state-metrics-deploy.yml

create kube-state-metrics service

kubectl apply -f kube-state-metrics-service.yml

Step 3 Install Prometheus

create ServiceAccount

kubectl apply -f prometheus-k8s-ServiceAccount.yml

create configmap

kubectl apply -f prometheus-config-configmap.yml

create Prometheus Server Deployment

kubectl apply -f prometheus-deploy.yml

create Prometheus Server Service

kubectl apply -f prometheus-service.yml

check the Node_Port

kubectl get service -n monitoring

Now can visit <Node_IP>:<Node_Port> to see Prometheus.

Step 4 Install Grafana

create Grafana Server Deployment

kubectl apply -f grafana-deploy.yml

create Grafana Server Service

kubectl apply -f grafana-service.yml

check the Nose_Port

kubectl get service -n monitoring

Now can visit <Node_IP>:<Node_Port> to see Grafana.

Step 5 Install Nginx ingress-controller

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/baremetal/deploy.yaml

Create ingress

Create Grafana Service Ingress

kubectl apply -f grafana-ingress.yml

get the ingress IP

kubrctl get ing

set the addreee to the host /etc/hosts chek the 80 port mapping to which port

kubectl get service -n ingress-nginx

use <host_name><Node_port> to visit grafana

Design your dashboard.

Click configuration -> data sources.

Search prometheus and select.

Type the "http://<master ip>:<prometheus service mapping port>" on URL than click "Save & Test".

Click Create -> dashboard to add panel.

In query you can choose the data.

Or you can go google "Grafana dashboard" to fin the ID.

Click Create -> import to import the dashboard.

Reference

Prometheus and Grafana :

https://github.com/xingao0803/Prometheus

https://www.servicemesher.com/blog/prometheus-monitor-k8s-2/

Nginx-ingress controller :

https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal