概述
該項目將被廢棄(RETIRED)
Heapster是Kubernetes旗下的一個項目驶乾,Heapster是一個收集者无埃,并不是采集
- 1.Heapster可以收集Node節(jié)點上的cAdvisor數(shù)據:CPU颈将、內存麻诀、網絡和磁盤
- 2.將每個Node上的cAdvisor的數(shù)據進行匯總
- 3.按照kubernetes的資源類型來集合資源鳖轰,比如Pod话速、Namespace
- 4.默認的metric數(shù)據聚合時間間隔是1分鐘洒宝。還可以把數(shù)據導入到第三方工具ElasticSearch购公、InfluxDB、Kafka雁歌、Graphite
- 5.展示:Grafana或Google Cloud Monitoring
使用場景
Heapster+InfluxDB+Grafana共同組成了一個流行的監(jiān)控解決方案
Kubernetes原生dashboard的監(jiān)控圖表信息來自heapster
在HPA(Horizontal Pod Autoscaling)中也用到了Heapster宏浩,HPA將Heapster作為Resource Metrics API,向其獲取metric靠瞎,作為水平擴縮容的監(jiān)控依據
監(jiān)控指標
流程:
1.Heapster首先從apiserver獲取集群中所有Node的信息比庄。
2.通過這些Node上的kubelet獲取有用數(shù)據,而kubelet本身的數(shù)據則是從cAdvisor得到乏盐。
3.所有獲取到的數(shù)據都被推到Heapster配置的后端存儲中佳窑,并還支持數(shù)據的可視化。
部署
docker部署:
k8s中部署:
heapster.yml
influxdb.yml
注意修改鏡像地址父能,k8s.gcr.io無法訪問的話神凑,修改為內網鏡像地址,如替換為registry.cn-hangzhou.aliyuncs.com/google_containers
Heapster的參數(shù)
- source: 指定數(shù)據獲取源何吝,如kube-apiserver
inClusterConfig:
- kubeletPort: 指定kubelet的使用端口溉委,默認10255
- kubeletHttps: 是否使用https去連接kubelets(默認:false)
- apiVersion: 指定K8S的apiversion
- insecure: 是否使用安全證書(默認:false)
- auth: 安全認證
- useServiceAccount: 是否使用K8S的安全令牌
- sink: 指定后端數(shù)據存儲,這里指定influxdb數(shù)據庫
Metrics列表
[圖片上傳失敗...(image-9d5648-1546876216683)]
深入解析
架構圖:
代碼結構(https://github.com/kubernetes-retired/heapster)
heapster主函數(shù)(heapster/metrics/heapster.go)
主要流程:
創(chuàng)建數(shù)據源對象
創(chuàng)建后端存儲對象list
創(chuàng)建處理metrics數(shù)據的processors
創(chuàng)建manager爱榕,并開啟數(shù)據的獲取及export的協(xié)程
開啟Heapster server瓣喊,并支持各類API
cAdvisor返回的原始數(shù)據包含了nodes和containers的相關數(shù)據,heapster需要創(chuàng)建各種processor黔酥,用于處理成不同類型的數(shù)據藻三,比如pod, namespace, cluster八匠,node的聚合,求和平均之類趴酣,processor有如下幾種:
例如Pod的處理如下:
詳細解析參考: https://segmentfault.com/a/1190000008863353
現(xiàn)狀
heapster已經被官方廢棄(k8s 1.11版本中梨树,HPA已經不再從hepaster獲取數(shù)據)
- CPU內存、HPA指標: 改為metrics-server
- 基礎監(jiān)控:集成到prometheus中岖寞,kubelet將metric信息暴露成prometheus需要的格式抡四,使用Prometheus Operator
- 事件監(jiān)控:集成到https://github.com/heptiolabs/eventrouter
基于Heapster的HPA
本文為容器監(jiān)控實踐系列文章,完整內容見:container-monitor-book