zoukankan      html  css  js  c++  java
  • Kubernetes 1.5集成heapster

      Heapster是kubernetes集群监控工具。在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收集本机和容器的资源数据,包括cpu、内存、网络、文件系统等。在新版的kubernetes中,cAdvisor被集成到kubelet中。通过netstat可以查看到kubelet新开了一个4194的端口,这就是cAdvisor监听的端口,现在我们然后可以通过http://<node-ip>:4194的方式访问到cAdvisor。Heapster就是通过每个node上的kubelet,也就是实际的cAdvisor上收集数据并汇总,保存到后端存储中。

      Heapster支持多种后端存储,包括influxDB,Elasticsearch,Kafka等,在这篇文档里,我们使用influxDB作为后端存储来展示heapster的相关配置。需要说明的是,heapster依赖kubernetes dns配置。具体相关配置请参考另一篇博文《kubernetes 1.5配置dns》。

    1、下载heapster

    目前heapster的最新版本是1.2版本:

    wget https://github.com/kubernetes/heapster/archive/v1.2.0.tar.gz
    tar xf v1.2.0.tar.gz
    cd heapster-1.2.0/deploy/kube-config
    cp -r influxdb /data/kubernetes/

    上面的操作是下载heapster,然后将其中的influxdb目录复制到我们用于保存相关yaml文件的目录/data/kubernetes目录。其中influxdb目录中包含如下几个文件:

    [root@server-116 influxdb]# ll -h
    total 20K
    -rw-r--r--. 1 root root  414 Mar 15 18:04 grafana-service.yaml
    -rw-r--r--. 1 root root  630 Mar 15 21:04 heapster-controller.yaml
    -rw-r--r--. 1 root root  249 Mar 15 18:04 heapster-service.yaml
    -rw-r--r--. 1 root root 1.5K Mar 15 18:17 influxdb-grafana-controller.yaml
    -rw-r--r--. 1 root root  259 Mar 15 18:04 influxdb-service.yaml

    我们需要修改相应几个controller文件中的image镜像的地址,还是一样,通过使用阿里云镜像地址dev.aliyun.com,修改完成以后,直接执行操作如下:

    kubectl create -f /data/kubernetes/influxdb

    这个时候,我们通过kubectl get pods --all-namespaces命令可以看到两个pod都正常启动,但我们通过dashboard却看不到相应的监控图。通过kubectl logs 查看heapster的容器日志。看到如下报错:

    E0315 11:58:16.155096       1 reflector.go:205] k8s.io/heapster/metrics/heapster.go:232: Failed to list *api.Pod: Get https://kubernetes.default/api/v1/pods?resourceVersion=0: x509: certificate is valid for server-116, not kubernetes.default
    E0315 11:58:16.168369       1 reflector.go:205] k8s.io/heapster/metrics/processors/namespace_based_enricher.go:84: Failed to list *api.Namespace: Get https://kubernetes.default/api/v1/namespaces?resourceVersion=0: x509: certificate is valid for server-116, not kubernetes.default

    从报错可以看出,是无法连接https://kubernetes.default这个地址。我们知道kubernetes.default其实就是apiserver本身,只不过这里是使用了kubernetes的域名系统进行解析。报错是因为连接了apiserver的secure port,需要ssl认证,导致了校验异常。为了规避这种校验,我们可以使用一种取巧的办法,就是使用非insecure-port连接,即apiserver的8080端口。

    我们找到heapster-controller.yaml文件,里面有关于其启动参数配置如下:

            command:
            - /heapster
            - --source=kubernetes:https://kubernetes.default
            - --sink=influxdb:http://monitoring-influxdb:8086

    对两个参数做下简单说明:

    --source代表heapster的数据源,即从哪里获取数据,这里当然是从apiserver拿数据

    --sink代表heapster获取到的数据存储到哪里,我们这里使用了influxdb,influxdb的地址在influxdb相关的yaml文件中有定义,可以自行查看。

    我们要做的,就是修改--source的地址,改成如下配置:

    --source=kubernetes:http://10.5.10.116:8080?inClusterConfig=false

    其中10.5.10.116即apiserver地址,inClusterConfig=false代表不使用service accounts中的kube config信息。

    这样配置以后,我们重新运行heapster,再等一会生成数据,就可以看到如下界面了:

    参考:http://tonybai.com/2017/01/20/integrate-heapster-for-kubernetes-dashboard/

  • 相关阅读:
    linux下挂载(mount)光盘镜像文件、移动硬盘
    Windows 7与虚拟机VMware下运行的UBUNTU10.10共享文件夹
    Install Language support in CentOS 5 or Red Hat Enterprise Linux CentOS add Chinese Support
    卫星定位授时系统的时间表示主要有以下几种方法:
    How to mount ntfs external USB drive to CentOS 5,CentOS挂载移动硬盘
    解决Audacious 乱码问题
    2011030914来去匆匆的武子
    VLA的AIPS简单绘图
    解决ubuntu没有声音的方法
    儒略日的计算
  • 原文地址:https://www.cnblogs.com/breezey/p/6556913.html
Copyright © 2011-2022 走看看