安裝kube-prometheus


一、概述

簡介

kube-prometheus 是一整套監控解決方案,它使用 Prometheus 采集集群指標,Grafana 做展示,包含如下組件:

  • The Prometheus Operator
  • Highly available Prometheus
  • Highly available Alertmanager
  • Prometheus node-exporter
  • Prometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter)
  • kube-state-metrics
  • Grafana

 

二、安裝

環境說明

操作系統:centos 7.6

k8s版本:1.18.1

ip地址:10.212.82.63

主機名:k8s-master

配置:2核2g

 

操作系統:centos 7.6

k8s版本:1.18.1

ip地址:10.212.82.65

主機名:k8s-node01

配置:2核8g

 

下載項目

以下步驟,請在k8s-master上執行。

安裝git工具

yum install -y git

 

克隆kube-prometheus

git clone https://github.com/coreos/kube-prometheus

 

查看manifest

[root@k8s-master]# cd kube-prometheus/manifests/
[root@k8s-master manifests]# ll

輸出:

總用量 1696
-rw-r--r-- 1 root root     405 12月 17 10:25 alertmanager-alertmanager.yaml
-rw-r--r-- 1 root root     964 12月 17 10:17 alertmanager-secret.yaml
-rw-r--r-- 1 root root      96 12月 17 10:17 alertmanager-serviceAccount.yaml
-rw-r--r-- 1 root root     254 12月 17 10:17 alertmanager-serviceMonitor.yaml
-rw-r--r-- 1 root root     326 12月 17 10:20 alertmanager-service.yaml
-rw-r--r-- 1 root root     550 12月 17 10:17 grafana-dashboardDatasources.yaml
-rw-r--r-- 1 root root 1403795 12月 17 10:17 grafana-dashboardDefinitions.yaml
-rw-r--r-- 1 root root     454 12月 17 10:17 grafana-dashboardSources.yaml
-rw-r--r-- 1 root root    7722 12月 17 10:17 grafana-deployment.yaml
-rw-r--r-- 1 root root      86 12月 17 10:17 grafana-serviceAccount.yaml
-rw-r--r-- 1 root root     208 12月 17 10:17 grafana-serviceMonitor.yaml
-rw-r--r-- 1 root root     273 12月 17 10:20 grafana-service.yaml
-rw-r--r-- 1 root root     376 12月 17 10:17 kube-state-metrics-clusterRoleBinding.yaml
-rw-r--r-- 1 root root    1651 12月 17 10:17 kube-state-metrics-clusterRole.yaml
-rw-r--r-- 1 root root    2127 12月 17 10:18 kube-state-metrics-deployment.yaml
-rw-r--r-- 1 root root     192 12月 17 10:17 kube-state-metrics-serviceAccount.yaml
-rw-r--r-- 1 root root     829 12月 17 10:17 kube-state-metrics-serviceMonitor.yaml
-rw-r--r-- 1 root root     403 12月 17 10:17 kube-state-metrics-service.yaml
-rw-r--r-- 1 root root     266 12月 17 10:17 node-exporter-clusterRoleBinding.yaml
-rw-r--r-- 1 root root     283 12月 17 10:17 node-exporter-clusterRole.yaml
-rw-r--r-- 1 root root    2880 12月 17 10:18 node-exporter-daemonset.yaml
-rw-r--r-- 1 root root      92 12月 17 10:17 node-exporter-serviceAccount.yaml
-rw-r--r-- 1 root root     669 12月 17 10:17 node-exporter-serviceMonitor.yaml
-rw-r--r-- 1 root root     315 12月 17 10:17 node-exporter-service.yaml
-rw-r--r-- 1 root root     292 12月 17 10:17 prometheus-adapter-apiService.yaml
-rw-r--r-- 1 root root     396 12月 17 10:17 prometheus-adapter-clusterRoleAggregatedMetricsReader.yaml
-rw-r--r-- 1 root root     304 12月 17 10:17 prometheus-adapter-clusterRoleBindingDelegator.yaml
-rw-r--r-- 1 root root     281 12月 17 10:17 prometheus-adapter-clusterRoleBinding.yaml
-rw-r--r-- 1 root root     188 12月 17 10:17 prometheus-adapter-clusterRoleServerResources.yaml
-rw-r--r-- 1 root root     219 12月 17 10:17 prometheus-adapter-clusterRole.yaml
-rw-r--r-- 1 root root    1378 12月 17 10:17 prometheus-adapter-configMap.yaml
-rw-r--r-- 1 root root    1333 12月 17 10:18 prometheus-adapter-deployment.yaml
-rw-r--r-- 1 root root     325 12月 17 10:17 prometheus-adapter-roleBindingAuthReader.yaml
-rw-r--r-- 1 root root      97 12月 17 10:17 prometheus-adapter-serviceAccount.yaml
-rw-r--r-- 1 root root     408 12月 17 10:17 prometheus-adapter-serviceMonitor.yaml
-rw-r--r-- 1 root root     236 12月 17 10:17 prometheus-adapter-service.yaml
-rw-r--r-- 1 root root     269 12月 17 10:17 prometheus-clusterRoleBinding.yaml
-rw-r--r-- 1 root root     216 12月 17 10:17 prometheus-clusterRole.yaml
-rw-r--r-- 1 root root     621 12月 17 10:17 prometheus-operator-serviceMonitor.yaml
-rw-r--r-- 1 root root     800 12月 17 10:25 prometheus-prometheus.yaml
-rw-r--r-- 1 root root     293 12月 17 10:17 prometheus-roleBindingConfig.yaml
-rw-r--r-- 1 root root     983 12月 17 10:17 prometheus-roleBindingSpecificNamespaces.yaml
-rw-r--r-- 1 root root     188 12月 17 10:17 prometheus-roleConfig.yaml
-rw-r--r-- 1 root root    1141 12月 17 10:17 prometheus-roleSpecificNamespaces.yaml
-rw-r--r-- 1 root root   99490 12月 17 10:17 prometheus-rules.yaml
-rw-r--r-- 1 root root      93 12月 17 10:17 prometheus-serviceAccount.yaml
-rw-r--r-- 1 root root    6821 12月 17 10:17 prometheus-serviceMonitorApiserver.yaml
-rw-r--r-- 1 root root     395 12月 17 10:17 prometheus-serviceMonitorCoreDNS.yaml
-rw-r--r-- 1 root root    6310 12月 17 10:17 prometheus-serviceMonitorKubeControllerManager.yaml
-rw-r--r-- 1 root root    7126 12月 17 10:17 prometheus-serviceMonitorKubelet.yaml
-rw-r--r-- 1 root root     485 12月 17 10:17 prometheus-serviceMonitorKubeScheduler.yaml
-rw-r--r-- 1 root root     247 12月 17 10:17 prometheus-serviceMonitor.yaml
-rw-r--r-- 1 root root     315 12月 17 10:19 prometheus-service.yaml
drwxr-xr-x 2 root root    4096 12月 17 10:18 setup
View Code

 

修改鏡像源

國外鏡像源某些鏡像無法拉取,我們這里修改prometheus-operator,prometheus,alertmanager,kube-state-metrics,node-exporter,prometheus-adapter的鏡像源為國內鏡像源。我這里使用的是中科大的鏡像源。

sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' setup/prometheus-operator-deployment.yaml
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' prometheus-prometheus.yaml 
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' alertmanager-alertmanager.yaml
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' kube-state-metrics-deployment.yaml
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' node-exporter-daemonset.yaml
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' prometheus-adapter-deployment.yaml

 

修改類型為NodePort

為了可以從外部訪問prometheus,alertmanager,grafana,我們這里修改promethes,alertmanager,grafana的service類型為NodePort類型。

修改prometheus的service

cat prometheus-service.yaml

輸出:

apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort # 新增
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30090 # 新增
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP

 

修改alertmanager的service

cat alertmanager-service.yaml

輸出:

apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  type: NodePort # 新增
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 30093 # 新增
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

 

修改grafana的service

cat grafana-service.yaml

輸出:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort # 新增
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 32000 # 新增
  selector:
    app: grafana
  type: NodePort

 

修改副本數量

默認alertmanager副本數為3,prometheus副本數為2。這是官方基於高可用考慮的,由於我的服務器配置比較差,開這么副本比較浪費性能。

因此需要將副本數,統一改為1

 

修改alertmanager

vi alertmanager-alertmanager.yaml

將 replicas: 3,改為replicas: 1

 

修改prometheus

vi prometheus-prometheus.yaml

將 replicas: 2,改為replicas: 1

 

安裝kube-prometheus並確認狀態

安裝CRD和prometheus-operator

kubectl apply -f setup/

下載prometheus-operator鏡像需要花費幾分鍾,這里等待幾分鍾,直到prometheus-operator變成running狀態

kubectl get pod -n monitoring

輸出:

NAME                                   READY   STATUS    RESTARTS   AGE
prometheus-operator-5d96f4f876-tjgmp   2/2     Running   0          35m

 

安裝prometheus, alertmanager, grafana, kube-state-metrics, node-exporter等資源

kubectl apply -f .

下載鏡像比較花費時間,可以先去泡杯咖啡,等上半小時再回來,然后查看命名空間monitoring下面的pod狀態,直到monitoring命名空間下所有pod都變為running狀態,就大功告成了。

kubectl get pod -n monitoring

輸出:

NAME                                   READY   STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2     Running   0          30m
grafana-675dbb6748-sg6sk               1/1     Running   0          34m
kube-state-metrics-77bb8444b8-b9svz    3/3     Running   0          34m
node-exporter-pj4x9                    2/2     Running   0          34m
node-exporter-sw9zb                    2/2     Running   0          34m
prometheus-adapter-5dbb4cb95f-wwxb2    1/1     Running   0          34m
prometheus-k8s-0                       2/2     Running   1          34m
prometheus-operator-5d96f4f876-tjgmp   2/2     Running   0          35m

 

三、訪問頁面

prometheus

瀏覽器打開 http://10.212.82.63:30090/targets,注意:10.212.82.63為k8s-master的ip

 

 確保state的狀態都是UP

 

alertmanager

瀏覽器打開 http://10.212.82.63:30093/

 

grafana

瀏覽器打開 http://10.212.82.63:32000/

首次登錄,用戶名和密碼,都是admin

 

登錄之后,會提示修改密碼,可以選擇跳過skip

 

點擊左側的設置圖標,默認就已經幫你填寫了prometheus地址,是不是很貼心呀!

 

查看dashboards,根據下圖,點擊Default

 

這里面有很多,先來看pod監控,點擊 Kubernetes / Compute Resources / Node (Pods)

 

這里可以看到pod運行狀態,比如cpu和內存。下圖展示的是k8s-master主機,運行的所有pod。

 

回到剛才的頁面,再來看看node監控,點擊 Nodes

 

這里可以看到關於node服務器的一些基本信息,包括cpu,內存,網絡等等

 

Default里面還有其他圖表,這里就不一一展示了。

 

 

本文參考鏈接:

https://blog.csdn.net/guoxiaobo2010/article/details/106532357/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM