容器监控实践—Heapster

7次阅读

共计 1669 个字符,预计需要花费 5 分钟才能阅读完成。

概述
该项目将被废弃(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 系列 : https://yasongxu.gitbook.io/container-monitor/

正文完
 0