k8s集群中部署prometheus

2022-02-02 23:53:20 字數 4090 閱讀 5296

安裝node-exporter元件,在k8s集群的master1節點操作

cat >node-export.yaml  <#檢視node-exporter是否部署成功kubectl get pods -n monitor-sa

顯示如下,看到pod的狀態都是running,說明部署成功

name ready status restarts age

node-exporter-9qpkd 1/1 running 0 89s

node-exporter-zqmnk 1/1 running 0 89s

通過node-exporter採集資料curl  http://主機ip:9100/metrics

#node-export預設的監聽埠是9100,可以看到當前主機獲取到的所有監控資料,擷取一部分,如下

1.建立namespace、sa賬號在k8s集群的master節點操作

#建立乙個monitor-sa的命名空間

kubectl create ns monitor-sa 

#建立乙個sa賬號

kubectl create serviceaccount monitor -n monitor-sa  

#把sa賬號monitor通過clusterrolebing繫結到clusterrole上

kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin  --serviceaccount=monitor-sa:monitor

2.建立資料目錄

#在k8s集群的任何乙個node節點操作,因為我的k8s集群只有乙個node節點node1,所以我在node1上操作如下命令:

mkdir /data

chmod 777 /data/

3.安裝prometheus,以下步驟均在在k8s集群的master1節點操作

1)建立乙個configmap儲存卷,用來存放prometheus配置資訊

cat  >prometheus-cfg.yaml <注意:通過上面命令生成的promtheus-cfg.yaml檔案會有一些問題,$1和$2這種變數在檔案裡沒有,需要在k8s的master1節點開啟promtheus-cfg.yaml檔案,手動把$1和$2這種變數寫進檔案裡,promtheus-cfg.yaml檔案需要手動修改部分如下:

22行的replacement: ':9100'變成replacement: '$:9100'

42行的replacement: /api/v1/nodes//proxy/metrics/cadvisor變成

replacement: /api/v1/nodes/$/proxy/metrics/cadvisor

73行的replacement:  變成replacement: $1:$2

2)通過deployment部署prometheus

cat >prometheus-deploy.yaml <注意:在上面的prometheus-deploy.yaml檔案有個nodename字段,這個就是用來指定建立的這個prometheus的pod排程到哪個節點上,我們這裡讓nodename=node1,也即是讓pod排程到node1節點上,因為node1節點我們建立了資料目錄/data,所以大家記住:你在k8s集群的哪個節點建立/data,就讓pod排程到哪個節點。

#檢視prometheus是否部署成功

kubectl get pods -n monitor-sa

顯示如下,可看到pod狀態是running,說明prometheus部署成功

name ready status restarts age

node-exporter-9qpkd 1/1 running 0 76m

node-exporter-zqmnk 1/1 running 0 76m

prometheus-server-85dbc6c7f7-nsg94 1/1 running 0 6m7

3)給prometheus pod建立乙個service

cat  > prometheus-svc.yaml << eof

---apiversion: v1

kind: service

metadata:

name: prometheus

namespace: monitor-sa

labels:

spec:

type: nodeport

ports:

- port: 9090

targetport: 9090

protocol: tcp

selector:

component: server

eof

#檢視service在物理機對映的埠kubectl get svc -n monitor-sa

顯示如下:

name         type       cluster-ip    external-ip   port(s)          age

prometheus nodeport 10.96.45.93 9090:31043/tcp 50s

通過上面可以看到service在宿主機上對映的埠是31043,這樣我們訪問k8s集群的master1節點的ip:31043,就可以訪問到prometheus的web ui介面了

#訪問prometheus web ui介面

可看到如下頁面:

#點選頁面的status->targets,可看到如下,說明我們配置的服務發現可以正常採集資料

#為了每次修改配置檔案可以熱載入prometheus,也就是不停止prometheus,就可以使配置生效,如修改prometheus-cfg.yaml,想要使配置生效可用如下熱載入命令:

curl -x post

kubectl get pods -n monitor-sa -o wide | grep prometheus

顯示如下, 10.244.1.7就是prometheus的ip

prometheus-server-85dbc6c7f7-nsg94   1/1     running   0          29m   10.244.1.7     node
#熱載入速度比較慢,可以暴力重啟prometheus,如修改上面的prometheus-cfg.yaml檔案之後,可執行如下強制刪除:kubectl delete -f prometheus-cfg.yaml

kubectl delete -f prometheus-deploy.yaml

注意:

線上最好熱載入,暴力刪除可能造成監控資料的丟失

k8s集群部署 docker部署k8s安裝篇

1 安裝docker 緊接著配置乙個穩定 stable 的倉庫 倉庫配置會儲存到 etc yum.repos.d docker ce.repo檔案中 yum config manager add repo 更新yum安裝的相關docke軟體包 安裝docker ce yum update y yum...

rke部署k8s集群

作業系統 centos7.6 核心版本 linux 3.10.0 957.el7.x86 64 kubernetes v1.13.5 docker版本 18.06.1 ce 你需要準備如下這些東西 這個鏈結,找你要的版本,本例為v0.2.1 這裡有cluster.yml檔案的樣例 ip角色 備註10...

k8s集群單機部署

一 安裝kubelet kubeadm 和kubectl 配置k8s的源 sudo touch etc apt sources.list.d kubernetes.list sudo echo deb kubernetes xenial main etc apt sources.list.d kub...