容器监控实践—Heapster
概述
該項目將被廢棄(RETIRED)
Heapster是Kubernetes旗下的一個項目,Heapster是一個收集者,并不是采集
- 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配置的后端存儲中,并還支持數據的可視化。
部署
docker部署:
k8s中部署:
heapster.yml
influxdb.yml
注意修改鏡像地址,k8s.gcr.io無法訪問的話,修改為內網鏡像地址,如替換為registry.cn-hangzhou.aliyuncs.com/google_containers
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獲取數據)
- CPU內存、HPA指標: 改為metrics-server
- 基礎監控:集成到prometheus中,kubelet將metric信息暴露成prometheus需要的格式,使用Prometheus Operator
- 事件監控:集成到https://github.com/heptiolabs...
基于Heapster的HPA
參考:基于Heapster的HPA
本文為容器監控實踐系列文章,完整內容見:container-monitor-book
總結
以上是生活随笔為你收集整理的容器监控实践—Heapster的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回首向来萧瑟处,也无风雨也无晴~小祁的2
- 下一篇: Git使用方法——原创