Kubernetes集群监控:Heapster

2017-01-14 阅读: Kubernetes

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:8086

heapster-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服务可用。

参考

标题:Kubernetes集群监控:Heapster
本文链接:https://blog.frognew.com/2017/01/kubernetes-heapster.html
转载请注明出处。

目录