1. 程式人生 > >kubernetes 監控方案之:heapster+influxdb+grafana(十八)

kubernetes 監控方案之:heapster+influxdb+grafana(十八)

目錄

heapster已經deprecated了:https://github.com/kubernetes/heapster

一、Heapster 介紹

Heapster 是容器叢集監控和效能分析工具,天然的支援 Kubernetes 和 CoreOS。

Kubernetes 有個出名的監控 agent—cAdvisor。在每個 kubernetes Node 上都會執行 cAdvisor,它會收集本機以及容器的監控資料 (cpu,memory,filesystem,network,uptime)。在較新的版本中,K8S 已經將 cAdvisor 功能整合到 kubelet 元件中。每個 Node 節點可以直接進行
web 訪問。

Heapster 是一個收集者,Heapster 可以收集 Node 節點上的 cAdvisor 資料,將每個 Node 上的 cAdvisor 的資料進行彙總,還可以按照 kubernetes 的資源型別來集合資源,比如 Pod、Namespace,可以分別獲取它們的 CPU、記憶體、網路和磁碟的 metric。預設的 metric 資料聚合時間間隔是1分鐘。還可以把資料匯入到第三方工具(如 InfluxDB)。

Kubernetes 原生 dashboard 的監控圖表資訊來自 heapster。在 Horizontal Pod Autoscaling 中也用到了 Heapster,HPA 將 Heapster 作為 Resource Metrics API,向其獲取 metric。

** 架構圖 **

Heapster 首先從 apiserver 獲取叢集中所有 Node 的資訊,然後通過這些 Node 上的 kubelet 獲取有用資料,而 kubelet 本身的資料則是從 cAdvisor 得到。所有獲取到的資料都被推到 Heapster 配置的後端儲存中,並還支援資料的視覺化。現在後端儲存 + 視覺化的方法,如InfluxDB + grafana。

二、部署

Heapster 本身是一個 Kubernetes 應用,部署方法很簡單,執行如下命令:

git clone https://github.com/kubernetes/heapster.git
[[email protected]
~]# kubectl apply -f heapster/deploy/kube-config/influxdb/ deployment.extensions/monitoring-grafana created service/monitoring-grafana created serviceaccount/heapster created deployment.extensions/heapster created service/heapster created deployment.extensions/monitoring-influxdb created service/monitoring-influxdb created [[email protected] ~]# kubectl apply -f heapster/deploy/kube-config/rbac/heapster-rbac.yaml clusterrolebinding.rbac.authorization.k8s.io/heapster created

因為眾所周知的原因,有些映象我們是下載不下來,只能間接的獲取,我們還是在阿里雲的倉庫裡面找一下。

docker pull registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4
docker tag registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4 k8s.gcr.io/heapster-amd64:v1.5.4
docker image rm registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4

docker pull registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4
docker tag registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4 k8s.gcr.io/heapster-grafana-amd64:v5.0.4
docker image rm registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4

docker pull registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2
docker tag registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2 k8s.gcr.io/heapster-influxdb-amd64:v1.5.2
docker image rm registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2

Heapster 相關資源如下:

[[email protected] ~]# kubectl get pod -n kube-system |grep -e heapster -e monitor
heapster-f64999bc-8x7j7                      1/1     Running   0          16m
monitoring-grafana-564f579fd4-jsx2r          1/1     Running   0          16m
monitoring-influxdb-8b7d57f5c-ntnxc          1/1     Running   0          16m
[[email protected] ~]# kubectl get deploy -n kube-system |grep -e heapster -e monitor
heapster              1/1     1            1           16m
monitoring-grafana    1/1     1            1           16m
monitoring-influxdb   1/1     1            1           16m
[[email protected] ~]# kubectl get svc -n kube-system |grep -e heapster -e monitor
heapster              ClusterIP   10.101.170.222   <none>        80/TCP          16m
monitoring-grafana    ClusterIP   10.104.60.71     <none>        80/TCP          16m
monitoring-influxdb   ClusterIP   10.104.104.41    <none>        8086/TCP        16m

為便與訪問,可以通過 kubectl editService monitoring-grafana的型別修改為 NodePort

[[email protected] ~]# kubectl patch svc monitoring-grafana -p '{"spec":{"type":"NodePort"}}' -n kube-system
service/monitoring-grafana patched

三、使用

瀏覽器開啟 Grafana 的 Web UI:http://MASTER_IP:32314/

Heapster 已經預先配置好了 Grafana 的 DataSource 和 Dashboard。

Heapster 預定義的 Dashboard 很直觀也很簡單。如有必要,可以在 Grafana 中定義自己的 Dashboard 滿足特定的業務需求。