容器監控實踐—Heapster

概述

該項目將被廢棄(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

相關文章
相關標籤/搜索