Kubernetes集群监控:Heapster
2017-01-14
Heapster是Kubernetes集群监控工具。 在以前Kubernetes的Node上会运行cAdvisor作为agent收集本机和容器的资源数据(如:CPU,内存,网络,文件系统等等)。 在新版本的Kubernetes中,cAdvisor被集成到kubelet中。Heapster通过kubelet查看运行在集群中所有节点的资源使用情况。
下面在集群中的一个Node上查看kubelet监听端口:
1netstat -nltp | grep kubelet
2tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 2115/kubelet
3tcp6 0 0 :::10250 :::* LISTEN 2115/kubelet
4tcp6 0 0 :::10255 :::* LISTEN 2115/kubelet
5tcp6 0 0 :::4194 :::* LISTEN 2115/kubelet
注意到4194端口就是cAdvisor,可以通过http://<NodeIp>:4194
访问cAdvisor的Web界面。
cAdvisor同时提供了restful Api。Heapster会从每个Node的kubelet(实际上是kubelet集成的cAdvisor)上收集数据并汇总,保存到后端的存储中(如influxDB)。
Kubernetes Dashboard插件安装中安装heapster时,是以Pod的形式运行在Kubernetes中,后端存储采用的influxDB,可视化使用grafana。
heapster的RC定义如下:
1apiVersion: v1
2kind: ReplicationController
3metadata:
4 labels:
5 k8s-app: heapster
6 name: heapster
7 version: v6
8 name: heapster
9 namespace: kube-system
10spec:
11 replicas: 1
12 selector:
13 k8s-app: heapster
14 version: v6
15 template:
16 metadata:
17 labels:
18 k8s-app: heapster
19 version: v6
20 spec:
21 containers:
22 - name: heapster
23 image: kubernetes/heapster:canary
24 imagePullPolicy: IfNotPresent
25 command:
26 - /heapster
27 - --source=kubernetes:https://kubernetes.default
28 - --sink=influxdb:http://monitoring-influxdb:8086
heapster-controller.yaml文件中容器的命令行参数cmd中,--source=kubernetes:https://kubernetes.default
指明了heapster的数据源,这里使用的是域名
kubernetes.default
,实际上就是kube-apiserver。
1kubectl get svc | grep kubernetes
2kubernetes 10.96.0.1 <none> 443/TCP 8d
因为Heapster的source参数使用的域名,所以要求Kubernetes的DNS服务可用。