目錄git
heapster 已經 deprecated 了:https://github.com/kubernetes/heapster,因此下面的演示主要針對 Kubernetes 1.10 以前的版本,我這裏是新版本,因此是收集不到數據的。github
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。網絡
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 edit
將 Service 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
瀏覽器打開 Grafana 的 Web UI:http://MASTER_IP:32314/
Heapster 已經預先配置好了 Grafana 的 DataSource 和 Dashboard。
Heapster 預約義的 Dashboard 很直觀也很簡單。若有必要,能夠在 Grafana 中定義本身的 Dashboard 知足特定的業務需求。