Monitoring in Kubernetes

less than 1 minute read

Published:

cAdvisor是什么

cAdvisor对Node机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况,cAdvisor集成在Kubelet中,当kubelet启动时会自动启动cAdvisor,即一个cAdvisor仅对一台Node机器进行监控。kubelet的启动参数 --cadvisor-port 可以定义cAdvisor对外提供服务的端口,默认为4194。可以通过浏览器访问。项目主页:cadvisor

在k8s中cAdvisor 负责单节点内部的容器和节点资源使用统计,内置在 Kubelet 内部,并通过 Kubelet /metrics/cadvisor 对外提供 API。

从 v1.7 开始,Kubelet metrics API 不再包含 cadvisor metrics,而是提供了一个独立的 API 接口:

  • Kubelet metrics: http://127.0.0.1:8001/api/v1/proxy/nodes/<node-name>/metrics
  • Cadvisor metrics: http://127.0.0.1:8001/api/v1/proxy/nodes/<node-name>/metrics/cadvisor

注意:cadvisor 监听的端口将在 v1.12 中删除,建议所有外部工具使用 Kubelet Metrics API 替代。

其他k8s监控方案组件

Kubernetes 社区提供了一些列的工具来监控容器和集群的状态,并借助 Prometheus 提供告警的功能。

  • cAdvisor 负责单节点内部的容器和节点资源使用统计,内置在 Kubelet 内部,并通过 Kubelet /metrics/cadvisor 对外提供 API
  • InfluxDB 是一个开源分布式时序、事件和指标数据库;而 Grafana 则是 InfluxDB 的 Dashboard,提供了强大的图表展示功能。它们常被组合使用展示图表化的监控数据。
  • metrics-server 提供了整个集群的资源监控数据,但要注意
    • Metrics API 只可以查询当前的度量数据,并不保存历史数据
    • Metrics API URI 为 /apis/metrics.k8s.io/,在 k8s.io/metrics 维护
    • 必须部署 metrics-server 才能使用该 API,metrics-server 通过调用 Kubelet Summary API 获取数据
  • kube-state-metrics 提供了 Kubernetes 资源对象(如 DaemonSet、Deployments 等)的度量。
  • Prometheus 是另外一个监控和时间序列数据库,还提供了告警的功能。
  • Node Problem Detector 监测 Node 本身的硬件、内核或者运行时等问题。
  • Heapster 提供了整个集群的资源监控,并支持持久化数据存储到 InfluxDB 等后端存储中(已弃用)