監控k8s的主流方案是prometheus+grafana兩大套件,為了快速部署並監控k8s,目前有兩款主流grafana插件提供給了我們方案
1、環境說明
本文環境是二進制部署的k8s集群,prometheus和grafana通過yaml部署(非operator)
# kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
# kubectl get pods -n kube-system -l k8s-app=prometheus
NAME READY STATUS RESTARTS AGE
prometheus-0 2/2 Running 0 1m
# kubectl get pods -n kube-system -l app=grafana
NAME READY STATUS RESTARTS AGE
grafana-0 1/1 Running 0 1m
2、grafana-kubernetes-app插件
2.1、插件介紹
Grafana Kubernetes App可監控Kubernetes集群的性能。它包括4個儀表板,即集群,節點,Pod/容器和部署。它允許自動部署所需的Prometheus導出器,並使用默認的scrape配置與您的集群內Prometheus部署一起使用。收集的指標是高級集群和節點統計信息,以及較低級別的pod和容器統計信息。使用高級指標進行警報,使用低級指標進行故障排除。
要求
目前僅支持Prometheus
為了自動部署exporter,則需要Kubernetes 1.6或更高版本。
Grafana 5.0.0+
特征
- 該應用程序使用
Kubernetes標簽來過濾Pod指標。Kubernetes集群往往有很多Pod和很多Pod指標。Pod / Container儀表板利用了pod標簽,因此可以輕松找到相關的pod。 - 輕松安裝
exporter,從Grafana一鍵式部署,或使用kubectl手動部署 Heapster中不可用的群集級別指標,例如CPU容量與CPU使用率。
集群指標
- Pod容量/用途
- 內存容量/使用率
- CPU容量/使用率
- 磁盤容量/使用率
- 節點,容器和容器概述
節點指標
- 中央處理器
- 可用內存
- 每個CPU的負載
- 讀取IOPS
- 寫入IOPS
- 實用率
- 網絡流量/秒
- 網絡數據包/秒
- 網絡錯誤/秒
Pod/容器指標
- 內存使用情況
- 網絡流量
- CPU使用率
- 讀取IOPS
- 寫入IOPS
2.2、插件安裝
進入pod或者將插件離線下載后上傳到/var/lib/grafana/plugins目錄
# kubectl get pods -n kube-system -l app=grafana
NAME READY STATUS RESTARTS AGE
grafana-0 1/1 Running 0 123m
# kubectl -n kube-system exec -it grafana-0 bash
bash-5.0$ grafana-cli plugins install grafana-kubernetes-app
installing grafana-kubernetes-app @ 1.0.1
from: https://grafana.com/api/plugins/grafana-kubernetes-app/versions/1.0.1/download
into: /var/lib/grafana/plugins
✔ Installed grafana-kubernetes-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
提示需要重啟服務,此處直接刪除pod,讓其重新拉起即可
# kubectl -n kube-system delete pods grafana-0
2.3、插件配置
重新訪問grafana界面查看插件列表,找到kubernetes插件並啟用

選擇創建集群

配置項如下
- name:名稱,自定義
- URL:
api-server的地址 - Auth:認證信息,勾選
TLS Client Auth和With CA Cert- TLS Auth Details
此處配置的是插件連接k8s的認證信息,這里我們可以新建一個kubeconfig文件也可以沿用kubectl使用的kubeconfig文件,在kubeconfig文件中的內容使經過base64編碼后的,在這里需要將這些內容解碼,類似echo "key內容" | base64 -d- CA Cert 對應
kubeconfig中的certificate-authority-data - Client Cert 對應
kubeconfig中的client-certificate-data - Client Key 對應
kubeconfig中的client-key-data
- CA Cert 對應
- TLS Auth Details
- Datasource:數據源,選擇之前配置好的
prometheus - 除上面內容外,還可以選擇通過此插件自動在集群中注入
prometheus的配置及部署node_exporter,這里已經部署過了,就不再部署了

如上圖所示,填寫完后點擊Save,然后等待一會兒查看是否成功

2.4、插件效果
按照上面的操作成功配置后,插件會自動在grafana中添加多個實用的dashboard,下圖展示其中一個

3、devopsprodigy-kubegraf-app插件
3.1、插件介紹
DevOpsProdigy KubeGraf是一個非常優秀的Grafana Kubernetes插件,是Grafana官方的Kubernetes插件的升級版本,該插件可以用來可視化和分析Kubernetes集群的性能,通過各種圖形直觀的展示了Kubernetes集群的主要服務的指標和特征,還可以用於檢查應用程序的生命周期和錯誤日志。
要求
要安裝使用 DevOpsProdigy KubeGraf 插件需要滿足以下要求:
Grafana> 5.0.0 版本- 需要在
Kubernetes集群上部署Prometheus + node-exporter + kube-state-metrics - 依賴
Grafana-piechart-panel插件
特征
該插件包含3個主要的信息頁面,其中包含有關Kubernetes集群的詳細信息
應用概述
該插件可以顯示 Kubernetes 集群上面的應用的一些基本監控信息
- 應用程序邏輯圖
- Kubernetes 對象的分布
- 可視化應用程序的生命周期和基本特征信息
- 在集群中允許訪問的服務端口的描述信息
集群狀態
- 關於群集及其中的節點的狀態的摘要
- 監視應用程序生命周期的詳細信息
- 集群服務器中服務所在位置的可視化表示
節點概述
- 集群節點摘要
- 有關已用和已分配資源(RAM,CPU利用率)以及容器數量的信息
- 豆莢的物理分布
Dashboards
除了在插件主頁上提供了常見的信息之外,該插件還提供了另外5個Dashboard供我們來跟蹤集群的各種性能指標
- node dashboard
帶有節點指標的Dashboard,它可以顯示資源的使用情況,例如CPU利用率、內存消耗、空閑/iowait模式下的CPU時間百分比以及磁盤和網絡的狀態 - pod dashboard
可以根據所選擇的Pod來顯示對應的資源使用情況 - deployments dashboard
以Deployment為維度來顯示對應的資源對象相關的資源使用情況 - statefulsets dashboard
以Statefulset為維度來顯示對應的資源對象相關的資源使用情況 - daemonsets dashboard
以Daemonset為維度來顯示對應的資源對象相關的資源使用情況
上面三個Dashboard顯示了可用/不可用的應用程序的副本數量以及這些應用程序的容器狀態,還會跟蹤容器的重啟
3.2、插件安裝
進入pod或者將插件離線下載后上傳到/var/lib/grafana/plugins目錄
# kubectl get pods -n kube-system -l app=grafana
NAME READY STATUS RESTARTS AGE
grafana-0 1/1 Running 0 130m
# kubectl -n kube-system exec -it grafana-0 bash
bash-5.0$ grafana-cli plugins install devopsprodigy-kubegraf-app
installing devopsprodigy-kubegraf-app @ 1.3.0
from: https://grafana.com/api/plugins/devopsprodigy-kubegraf-app/versions/1.3.0/download
into: /var/lib/grafana/plugins
✔ Installed devopsprodigy-kubegraf-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
bash-5.0$ grafana-cli plugins install Grafana-piechart-panel #按照前面的提示如果沒有安裝Grafana-piechart-panel插件也需要安裝
installing Grafana-piechart-panel @ 1.5.0
from: https://grafana.com/api/plugins/Grafana-piechart-panel/versions/1.5.0/download
into: /var/lib/grafana/plugins
✔ Installed Grafana-piechart-panel successfully
Restart grafana after installing plugins . <service grafana-server restart>
提示需要重啟服務,此處直接刪除pod,讓其重新拉起即可
# kubectl -n kube-system delete pods grafana-0
3.3、插件配置
同樣的,重新訪問grafana界面查看插件列表,找到DevOpsProdigy KubeGraf插件並啟用
點擊 Set up your first k8s-cluster 創建一個新的Kubernetes集群

配置和Kubernetes App插件一樣,這里不再贅述,如圖所示

3.4、插件效果


