本节内容:

  • Kubernetes 监控方案
  • Heapster、InfluxDB和Grafana介绍
  • 安装配置Heapster、InfluxDB和Grafana
  • 访问 grafana
  • 访问 influxdb admin UI
  • heapster采集的metric

 

一、Kubernetes 监控方案

可选的方案:

  • Heapster + InfluxDB + Grafana
  • Prometheus + Grafana
  • Cadvisor + InfluxDB + Grafana

本篇文章介绍的是Heapster + InfluxDB + Grafana,kubernetes集群(1.6.0)搭建见前面的文章。

 

二、Heapster、InfluxDB和Grafana介绍

开源软件cAdvisor(Container cAdvisor)是用于监控容器运行状态的利器之一(cAdvisor项目的主页为https://github.com/cAdvisor),它被用于多个与Docker相关的开源项目中。

在kubernetes系统中,cAdvisor已经被默认集成到了kubelet组件内,当kubelet服务启动时,它会自动启动cAdvisor服务,然后cAdvisor会实时采集所在节点的性能指标及节点上运行的容器的性能指标。kubelet的启动参数--cadvisor-port可自定义cAdvisor对外提供服务的端口号,默认是4194。

cAdvisor提供了web页面可供浏览器访问,例如本kubernetes集群中的一个Node的ip是172.16.7.151,那么浏览器输入http://172.16.7.151:4194可以访问cAdvisor的监控页面。cAdvisor主页显示了主机的实时运行状态,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等信息。

但是cAdvisor只提供了单机的容器资源占用情况,而在大规模容器集群中,需要对所有的Node和全部容器进行性能监控。这就需要一套工具来实现集群性能数据的采集、存储和展示:Heapster、InfluxDB和Grafana。

Heapster提供了整个集群的资源监控,并支持持久化数据存储到InfluxDB、Google Cloud Monitoring或者其他的存储后端。Heapster从kubelet提供的API采集节点和容器的资源占用。另外,Heapster的 /metrics API提供了Prometheus格式的数据。

InfluxDB是一个开源分布式时序、事件和指标数据库;而Grafana则是InfluxDB的 dashboard,提供了强大的图表展示功能。它们常被组合使用展示图表化的监控数据。

Heapster、InfluxDB和Grafana均以Pod的形式启动和运行,其中Heapster需要与Kubernetes Master进行安全连接。

 

三、安装配置Heapster、InfluxDB和Grafana

heapster release 页面 下载heapster。

[root@node1 opt]# wget https://github.com/kubernetes/heapster/archive/v1.3.0.zip
[root@node1 opt]# unzip v1.3.0.zip
[root@node1 opt]# cd heapster-1.3.0/deploy/kube-config/influxdb
[root@node1 influxdb]# ls *.yaml
grafana-deployment.yaml  heapster-deployment.yaml  influxdb-deployment.yaml
grafana-service.yaml     heapster-service.yaml     influxdb-service.yaml

 

1. 创建文件heapster-rbac.yaml

[root@node1 influxdb]# vim heapster-rbac.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: heapster
  namespace: kube-system

---

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: heapster
subjects:
  - kind: ServiceAccount
    name: heapster
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
heapster-rbac.yaml

相关文章: