Heapster是Kubernetes集群监控工具。 在以前Kubernetes的Node上会运行cAdvisor作为agent收集本机和容器的资源数据(如:CPU,内存,网络,文件系统等等)。 在新版本的Kubernetes中,cAdvisor被集成到kubelet中。Heapster通过kubelet查看运行在集群中所有节点的资源使用情况。
下面在集群中的一个Node上查看kubelet监听端口:
netstat -nltp | grep kubelet
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 2115/kubelet
tcp6 0 0 :::10250 :::* LISTEN 2115/kubelet
tcp6 0 0 :::10255 :::* LISTEN 2115/kubelet
tcp6 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定义如下:
apiVersion: v1
kind: ReplicationController
metadata:
labels:
k8s-app: heapster
name: heapster
version: v6
name: heapster
namespace: kube-system
spec:
replicas: 1
selector:
k8s-app: heapster
version: v6
template:
metadata:
labels:
k8s-app: heapster
version: v6
spec:
containers:
- name: heapster
image: kubernetes/heapster:canary
imagePullPolicy: IfNotPresent
command:
- /heapster
- --source=kubernetes:https://kubernetes.default
- --sink=influxdb:http://monitoring-influxdb:8086heapster-controller.yaml文件中容器的命令行参数cmd中,--source=kubernetes:https://kubernetes.default指明了heapster的数据源,这里使用的是域名
kubernetes.default,实际上就是kube-apiserver。
kubectl get svc | grep kubernetes
kubernetes 10.96.0.1 <none> 443/TCP 8d因为Heapster的source参数使用的域名,所以要求Kubernetes的DNS服务可用。