如遇图片无法加载请使用代理访问

Cluster monitoring with Prometheus and Rancher

前言

本文主要讲述 2023 K3s Rancher 部署 Prometheus + Grafana

如果你还没有部署 K3s 和 Rancher ,你可以浏览这篇文章:【K3S】01 - 异地集群初始化


环境声明

hostname 系统 配置 节点 角色 部署
m1 Ubuntu-Server(20.04) 2c4g 192.168.0.67/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server
nginx
rancher(2.7.1)
Helm(3.10.3)
n1 Ubuntu-Server(20.04) 1c2g 192.168.0.102/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server
m2 Ubuntu-Server(20.04) 2c4g 172.25.4.244/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server
harbor Ubuntu-Server(20.04) 2c4g 192.168.0.88 Docker-Hub
Jenkins CI/CD
Harbor(2.7.1)
Jenkins(2.3)
Docker-Compose

节点均用 WireGuard 打通内网,后续所有节点路由均用内网ip访问


安装

首先添加Prometheus的仓库地址

1
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

拉取离线包

我们拉取了指定版本的离线包

1
helm pull prometheus-community/kube-prometheus-stack --version 45.1.0

解压离线包

1
tar xvf kube-prometheus-stack-*

修改镜像地址为国内源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cd kube-prometheus-stack/
sed -i "s#registry.k8s.io/kube-state-metrics/kube-state-metrics#registry.cn-hangzhou.aliyuncs.com/chenby/kube-state-metrics#g" charts/kube-state-metrics/values.yaml
nano value.yaml

# ctrl + w 开启搜索
# 输入 repository: ingress-nginx/kube-webhook-certgen 回车

# 将 registry: registry.k8s.io 改为
# registry: registry.cn-hangzhou.aliyuncs.com

# 将 repository: ingress-nginx/kube-webhook-certgen 改为
# repository: chenby/kube-webhook-certgen

# 最终效果如下

image:
registry: registry.cn-hangzhou.aliyuncs.com
repository: chenby/kube-webhook-certgen

安装

1
2
kubectl create ns monitor
helm install op . -n monitor

修改 op-grafana 的类型为 NodePort

1
2
3
kubectl edit svc op-grafana -n monitor
# ClusterIP 改为 NodePort
type: NodePort

修改 op-kube-prometheus-stack-prometheus 的类型为 NodePort

1
2
3
kubectl edit svc op-kube-prometheus-stack-prometheus -n monitor
# ClusterIP 改为 NodePort
type: NodePort

查看安装结果

1
2
3
kubectl --namespace monitor get pods -l "release=op"
kubectl --namespace monitor get svc | grep op
kubectl --namespace monitor get pod | grep op

访问 任意节点ip:NodePort即可

Grafana 的默认用户名为 admin,密码为prom-operator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@m1:/yaml/kube-prometheus-stack# kubectl --namespace monitor get svc | grep op
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 103m
op-grafana NodePort 10.43.40.251 <none> 80:31844/TCP 121m
op-kube-prometheus-stack-alertmanager ClusterIP 10.43.152.63 <none> 9093/TCP 121m
op-kube-prometheus-stack-operator ClusterIP 10.43.206.216 <none> 443/TCP 121m
op-kube-prometheus-stack-prometheus NodePort 10.43.113.100 <none> 9090:32088/TCP 121m
op-kube-state-metrics ClusterIP 10.43.99.132 <none> 8080/TCP 121m
op-prometheus-node-exporter ClusterIP 10.43.235.11 <none> 9100/TCP 121m
prometheus-operated ClusterIP None <none> 9090/TCP 103m

# op-grafana 的 NodePort
http://192.168.0.67:31844

# op-kube-prometheus-stack-prometheus 的 NodePort
http://192.168.0.67:32088

参考文章

[1] Helm 安装 Kubernetes 监控套件 - 墨天轮 (modb.pro)