監控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
插件一樣,這里不再贅述,如圖所示