k8s集成kube-prometheus
正文
下载kube-prometheus,注意与k8s版本对应支持,k8s-1.25
版本使用kube-prometheus-release-0.12
克隆仓库,按照指引使用kubectl
安装prometheus
git clone -b release-0.12 https://github.com/prometheus-operator/kube-prometheus.git
cd kube-prometheus
kubectl apply --server-side -f manifests/setup
kubectl wait \
--for condition=Established \
--all CustomResourceDefinition \
--namespace=monitoring
kubectl apply -f manifests/
需要注意的是,prometheus有从register.k8s.io
中下载的镜像,以下两个镜像
- prometheus-adapter
- kube-state-metrics
未配置代理会导致下载失败。大多数解决方式都是将镜像从国内源下载后重新tag。如果有条件的话,这里推荐方法是添加k8s使用的底层代理。下面是两种运行时的配置方式,需要注意一下自己的配置目录。
Containerd
sudo mkdir -p /etc/systemd/system/containerd.service.d
sudo tee /etc/systemd/system/containerd.service.d/http-proxy.conf > /dev/null << EOF
[Service]
Environment="HTTP_PROXY=http://[ip]:[port]"
Environment="HTTPS_PROXY=http://[ip]:[port]"
EOF
sudo systemctl daemon-reload
sudo systemctl restart containerd
Docker
sudo mkdir -p /lib/systemd/system/docker.service.d/
sudo tee /lib/systemd/system/docker.service.d/http-proxy.conf > /dev/null << EOF
[Service]
Environment="HTTP_PROXY=http://[ip]:[port]"
Environment="HTTPS_PROXY=http://[ip]:[port]"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
修改以下三个service的type为NodePort,端口随机
- prometheus-k8s
- grafana
- alertmanager-main
注:在release-0.11版本之后新增了NetworkPolicy
默认是允许自己访问,如果了解NetworkPolicy可以修改一下默认的规则,可以用查看 ls *networkPolicy*
,如果不修改的话则会影响到修改NodePort类型也无法访问
如果不会Networkpolicy可以直接删除就行。
kubectl delete networkpolicy --all -n monitoring
在以上所有步骤完成后,在Kubernetes Dashboard
查看namespace为monitoring
所有资源都为正常的。
并且通过grafana
服务暴露出来的端口进行访问,修改密码后登录界面如下。
为了快速入门,可以直接使用自带模板,也可以在官网搜索模板,复制dashboard id
或者json文件
进行导入。
推荐使用模板,K8S for Prometheus Dashboard 20211010,预览图如下。
参考
kube-prometheus-github
grafana-dashboard-ui
Grafana-K8s全览监控
k8s 代理问题一站式解决
Kube-Prometheus 部署