本节内容:
- 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