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

heapster 已經 deprecated 了:https://github.com/kubernetes/heapster,因此下面的演示主要針對 Kubernetes 1.10 以前的版本,我這裏是新版本,因此是收集不到數據的。github

1、Heapster 介紹

Heapster 是容器集羣監控和性能分析工具,自然的支持 Kubernetes 和 CoreOS。web

Kubernetes 有個出名的監控 agent—cAdvisor。在每一個 kubernetes Node 上都會運行 cAdvisor,它會收集本機以及容器的監控數據 (cpu,memory,filesystem,network,uptime)。在較新的版本中,K8S 已經將 cAdvisor 功能集成到 kubelet 組件中。每一個 Node 節點能夠直接進行
web 訪問。docker

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。api

** 架構圖 **
瀏覽器

Heapster 首先從 apiserver 獲取集羣中全部 Node 的信息,而後經過這些 Node 上的 kubelet 獲取有用數據,而 kubelet 自己的數據則是從 cAdvisor 獲得。全部獲取到的數據都被推到 Heapster 配置的後端存儲中,並還支持數據的可視化。如今後端存儲 + 可視化的方法,如InfluxDB + grafana。網絡

2、部署

Heapster 自己是一個 Kubernetes 應用,部署方法很簡單,運行以下命令:架構

[root@master ~]# git clone https://github.com/kubernetes/heapster.git
[root@master ~]# 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
[root@master ~]# kubectl apply -f heapster/deploy/kube-config/rbac/heapster-rbac.yaml
clusterrolebinding.rbac.authorization.k8s.io/heapster created

由於衆所周知的緣由,有些鏡像咱們是下載不下來,只能間接的獲取,咱們仍是在阿里雲的倉庫裏面找一下。app

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 相關資源以下:

[root@master ~]# 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
[root@master ~]# 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
[root@master ~]# 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

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

目前咱們的 Pod heapster,是採集不到數據的,由於已經被廢棄,你們能夠經過下面的命令查看到錯誤信息。

kubectl logs heapster-f64999bc-8x7j7 -n kube-system

3、使用

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

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

Heapster 預約義的 Dashboard 很直觀也很簡單。若有必要,能夠在 Grafana 中定義本身的 Dashboard 知足特定的業務需求。

相關文章
相關標籤/搜索