概述
該項目將被廢棄(RETIRED)node
Heapster是Kubernetes旗下的一個項目,Heapster是一個收集者,並非採集git
- 1.Heapster能夠收集Node節點上的cAdvisor數據:CPU、內存、網絡和磁盤
- 2.將每一個Node上的cAdvisor的數據進行彙總
- 3.按照kubernetes的資源類型來集合資源,好比Pod、Namespace
- 4.默認的metric數據聚合時間間隔是1分鐘。還能夠把數據導入到第三方工具ElasticSearch、InfluxDB、Kafka、Graphite
- 5.展現:Grafana或Google Cloud Monitoring
使用場景
- Heapster+InfluxDB+Grafana共同組成了一個流行的監控解決方案
- Kubernetes原生dashboard的監控圖表信息來自heapster
- 在HPA(Horizontal Pod Autoscaling)中也用到了Heapster,HPA將Heapster做爲Resource Metrics API,向其獲取metric,做爲水平擴縮容的監控依據
監控指標
流程:
1.Heapster首先從apiserver獲取集羣中全部Node的信息。
2.經過這些Node上的kubelet獲取有用數據,而kubelet自己的數據則是從cAdvisor獲得。
3.全部獲取到的數據都被推到Heapster配置的後端存儲中,並還支持數據的可視化。github
部署
docker部署:
docker
k8s中部署:數據庫
heapster.yml
segmentfault
influxdb.yml
後端
注意修改鏡像地址,k8s.gcr.io沒法訪問的話,修改成內網鏡像地址,如替換爲registry.cn-hangzhou.aliyuncs.com/google_containersapi
Heapster的參數
- source: 指定數據獲取源,如kube-apiserver
inClusterConfig:安全
- kubeletPort: 指定kubelet的使用端口,默認10255
- kubeletHttps: 是否使用https去鏈接kubelets(默認:false)
- apiVersion: 指定K8S的apiversion
- insecure: 是否使用安全證書(默認:false)
- auth: 安全認證
- useServiceAccount: 是否使用K8S的安全令牌
- sink: 指定後端數據存儲,這裏指定influxdb數據庫
Metrics列表

深刻解析
架構圖:
網絡
代碼結構(https://github.com/kubernetes...)

heapster主函數(heapster/metrics/heapster.go)

主要流程:
- 建立數據源對象
- 建立後端存儲對象list
- 建立處理metrics數據的processors
- 建立manager,並開啓數據的獲取及export的協程
- 開啓Heapster server,並支持各種API
cAdvisor返回的原始數據包含了nodes和containers的相關數據,heapster須要建立各類processor,用於處理成不一樣類型的數據,好比pod, namespace, cluster,node的聚合,求和平均之類,processor有以下幾種:

例如Pod的處理以下:

詳細解析參考: https://segmentfault.com/a/11...
現狀
heapster已經被官方廢棄(k8s 1.11版本中,HPA已經再也不從hepaster獲取數據)
基於Heapster的HPA
參考:基於Heapster的HPA
本文爲容器監控實踐系列文章,完整內容見:container-monitor-book