K8S 部署 Prometheus 高可用集群(最新無坑版)
Prometheus 是一個開源的監(jiān)控和警報工具,特別適合云原生環(huán)境,下面是Prometheus的架構圖。

Prometheus有非常多的優(yōu)點:靈活的數(shù)據(jù)模型、簡單易用、高效的查詢語言、拉取模型、高可擴展性、開源社區(qū)支持,告警系統(tǒng)。這些優(yōu)點使得 Prometheus 成為現(xiàn)代 IT 基礎設施監(jiān)控的熱門選擇。
如果要全面了解Prometheus,需要先部署一個測試環(huán)境。
在K8S上部署prometheus一般有兩種常用的方式,一種是Operator安裝,一種是helm安裝。
監(jiān)控K8S效果展示:

我下面就介紹一下使用operator方式安裝prometheus。
在安裝之前需要查看一下兼容性,根據(jù)自己的K8S版本選擇對應的prometheus版本。
下載地址:https://github.com/prometheus-operator/kube-prometheus。

一、安裝prometheus
1. 下載軟件包
wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.16.0.tar.gz如果網(wǎng)絡不好,可以在github上下載后再上傳到服務器。
2. 修改配置
(1) 上傳軟件包后解壓
# 解壓
tar -xvf kube-prometheus-0.16.0.tar.gz
# 重命名
mv kube-prometheus-0.16.0  kube-prometheus(2) 執(zhí)行基本配置安裝
進入到解壓后目錄,可以看到有個manifests目錄這里面是我們所需的yaml,并且先運行manifests目錄下setup中的yaml文件。
[root@k8s-master data]# cd kube-prometheus
# 進入manifests目錄
[root@k8s-master kube-prometheus]# cd manifests/
# 執(zhí)行setup文件夾,將會為prometheus創(chuàng)建名稱空間和一些基礎清單
[root@k8s-master manifests]# kubectl create -f setup/(3) 修改暴露端口
主要修改prometheus,grafana和alertmanager的Service類型為NodePort,默認是ClusterIP。
【溫馨提示】端口范圍:30000-32767,也可以不指定具體端口,會隨機生成一個。
修改prometheus暴露端口為30090:
vim prometheus-service.yaml
spec:
  type: NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30090修改granfana暴露端口為30000:
vim grafana-service.yaml
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30000修改altermanager暴露端口為30093:
vim alertmanager-service.yaml 
spec:
  type: NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 300933. 安裝prometheus
(1) 執(zhí)行安裝
cd /data/kube-prometheus/manifests/
kubectl apply -f .(2) 刪除不必要的網(wǎng)絡策略
注意:新版添加了NetworkPolicy,可能會導致grafana、prometheus以及alertmanger等服務無法訪問,所以需要刪除掉:
kubectl delete networkpolicy --all -n monitoring(3) 查看安裝情況
kubectl get pod -n monitoring
發(fā)現(xiàn)grafana,state-metrics和adapter這三個pod鏡像拉取失敗,這種一般通過添加鏡像加速器來解決。
4. 解決鏡像問題
(1) Adapter鏡像問題
在鏡像前面添加m.daocloud.io:
[root@k8s-master manifests]# grep image prometheusAdapter-deployment.yaml
        image: m.daocloud.io/registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.12.0
# 重新加載
[root@k8s-master manifests]# kubectl replace -f  prometheusAdapter-deployment.yaml(2) grafana鏡像問題
在鏡像前面添加docker.m.daocloud.io
[root@k8s-master manifests]# grep image grafana-deployment.yaml
        image: docker.m.daocloud.io/grafana/grafana:12.1.0
# 重新加載
[root@k8s-master manifests]# kubectl replace -f grafana-deployment.yaml(3) kubeStateMetrics鏡像問題
在鏡像前面添加m.daocloud.io。
image: m.daocloud.io/registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.16.0
        image: quay.io/brancz/kube-rbac-proxy:v0.19.1
        image: quay.io/brancz/kube-rbac-proxy:v0.19.1
# 重新加載
kubectl replace -f kubeStateMetrics-deployment.yaml查看deployment,Service和pod的情況:
kubectl get deploy,svc,po -n monitoring二、使用promtheus和grafana
1. 登錄界面
(1) grafana登錄界面
默認登錄密碼為admin/admin,首次登錄需要修改密碼!
10.0.0.210:30000

(2) prometheus登錄界面
10.0.0.210:30090(3) altermanager登錄界面
10.0.0.210:300932. 導入監(jiān)控模版
登錄grafana后,自動會連接到prometheus中。

導入監(jiān)控模板,可以從grafana官網(wǎng)查找:

3. 常用的監(jiān)控模板
(1) Dashboard ID:15661
可以查看集群的整體資源狀態(tài)

(2) Dashboard ID:9730
主要展示Deployment,Pod等重要資源對象的可用情況和使用率

至此,Prometheus監(jiān)控搭建好,后續(xù)再分享Alertmanager相關的告警知識。















 
 
 













 
 
 
 