目录git
heapster 已经 deprecated 了:https://github.com/kubernetes/heapster,因此下面的演示主要针对 Kubernetes 1.10 以前的版本,我这里是新版本,因此是收集不到数据的。github
Heapster 是容器集群监控和性能分析工具,自然的支持 Kubernetes 和 CoreOS。web
Kubernetes 有个出名的监控 agent—cAdvisor。在每一个 kubernetes Node 上都会运行 cAdvisor,它会收集本机以及容器的监控数据 (cpu,memory,filesystem,network,uptime)。在较新的版本中,K8S 已经将 cAdvisor 功能集成到 kubelet 组件中。每一个 Node 节点能够直接进行
web 访问。docker
Heapster 是一个收集者,Heapster 能够收集 Node 节点上的 cAdvisor 数据,将每一个 Node 上的 cAdvisor 的数据进行汇总,还能够按照 kubernetes 的资源类型来集合资源,好比 Pod、Namespace,能够分别获取它们的 CPU、内存、网络和磁盘的 metric。默认的 metric 数据聚合时间间隔是1分钟。还能够把数据导入到第三方工具(如 InfluxDB)。后端
Kubernetes 原生 dashboard 的监控图表信息来自 heapster。在 Horizontal Pod Autoscaling 中也用到了 Heapster,HPA 将 Heapster 做为 Resource Metrics API,向其获取 metric。api
** 架构图 **
浏览器
Heapster 首先从 apiserver 获取集群中全部 Node 的信息,而后经过这些 Node 上的 kubelet 获取有用数据,而 kubelet 自己的数据则是从 cAdvisor 获得。全部获取到的数据都被推到 Heapster 配置的后端存储中,并还支持数据的可视化。如今后端存储 + 可视化的方法,如InfluxDB + grafana。网络
Heapster 自己是一个 Kubernetes 应用,部署方法很简单,运行以下命令:架构
[root@master ~]# git clone https://github.com/kubernetes/heapster.git [root@master ~]# kubectl apply -f heapster/deploy/kube-config/influxdb/ deployment.extensions/monitoring-grafana created service/monitoring-grafana created serviceaccount/heapster created deployment.extensions/heapster created service/heapster created deployment.extensions/monitoring-influxdb created service/monitoring-influxdb created [root@master ~]# kubectl apply -f heapster/deploy/kube-config/rbac/heapster-rbac.yaml clusterrolebinding.rbac.authorization.k8s.io/heapster created
由于众所周知的缘由,有些镜像咱们是下载不下来,只能间接的获取,咱们仍是在阿里云的仓库里面找一下。app
docker pull registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4 docker tag registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4 k8s.gcr.io/heapster-amd64:v1.5.4 docker image rm registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4 docker pull registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4 docker tag registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4 k8s.gcr.io/heapster-grafana-amd64:v5.0.4 docker image rm registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4 docker pull registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2 docker tag registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2 k8s.gcr.io/heapster-influxdb-amd64:v1.5.2 docker image rm registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2
Heapster 相关资源以下:
[root@master ~]# kubectl get pod -n kube-system |grep -e heapster -e monitor heapster-f64999bc-8x7j7 1/1 Running 0 16m monitoring-grafana-564f579fd4-jsx2r 1/1 Running 0 16m monitoring-influxdb-8b7d57f5c-ntnxc 1/1 Running 0 16m [root@master ~]# kubectl get deploy -n kube-system |grep -e heapster -e monitor heapster 1/1 1 1 16m monitoring-grafana 1/1 1 1 16m monitoring-influxdb 1/1 1 1 16m [root@master ~]# kubectl get svc -n kube-system |grep -e heapster -e monitor heapster ClusterIP 10.101.170.222 <none> 80/TCP 16m monitoring-grafana ClusterIP 10.104.60.71 <none> 80/TCP 16m monitoring-influxdb ClusterIP 10.104.104.41 <none> 8086/TCP 16m
为便与访问,能够经过 kubectl edit
将 Service monitoring-grafana
的类型修改成 NodePort
。
[root@master ~]# kubectl patch svc monitoring-grafana -p '{"spec":{"type":"NodePort"}}' -n kube-system service/monitoring-grafana patched
目前咱们的 Pod heapster
,是采集不到数据的,由于已经被废弃,你们能够经过下面的命令查看到错误信息。
kubectl logs heapster-f64999bc-8x7j7 -n kube-system
浏览器打开 Grafana 的 Web UI:http://MASTER_IP:32314/
Heapster 已经预先配置好了 Grafana 的 DataSource 和 Dashboard。
Heapster 预约义的 Dashboard 很直观也很简单。若有必要,能够在 Grafana 中定义本身的 Dashboard 知足特定的业务需求。