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- influxdb]# ll -h
total 20K
-rw-r--r--. root root Mar : grafana-service.yaml
-rw-r--r--. root root Mar : heapster-controller.yaml
-rw-r--r--. root root Mar : heapster-service.yaml
-rw-r--r--. root root .5K Mar : influxdb-grafana-controller.yaml
-rw-r--r--. root root Mar : 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 ::16.155096 reflector.go:] k8s.io/heapster/metrics/heapster.go:: 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 ::16.168369 reflector.go:] k8s.io/heapster/metrics/processors/namespace_based_enricher.go:: 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/
Kubernetes 1.5集成heapster的更多相关文章
- Kubernetes1.5 集成Heapster
		Kubernetes1.5 集成Heapster Heapster是kubernetes集群监控工具.在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收 ... 
- Kubernetes dashboard集成heapster
		图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster . Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS ,并且支持多种存储后端,比如: In ... 
- Kubernetes运维生态-Heapster分析
		Heapster在Kubernetes的运维生态中如下:集群的容器的监控数据收敛汇聚层 heapster1.0版本后内部分为event和metric两个进程,可制作为两个docker镜像部署为两个独立 ... 
- 使用 kubeadm 安装部署 kubernetes 1.9-部署heapster插件
		1.先到外网下载好镜像倒进各个节点 2.下载yaml文件和创建应用 mkdir -p ~/k8s/heapster cd ~/k8s/heapster wget https://raw.githubu ... 
- kubernetes和calico集成
		硬件环境: 三台虚拟机: 192.168.99.129 master(kube-apiserver.kube-controller-manager.kube-proxy.kube-scheduler. ... 
- spring boot zuul集成kubernetes等第三方登录
		介绍一下,在单点登录平台集成kubernetes登录,集成其它系统的登录原理是一样的,如grafana, nacos, jenkins等. POM引用: <dependency> < ... 
- CentOS 7 本地安装kubernetes
		环境 : CentOS7 master 192.168.94.11 node1 192.168.94.22 node2 192.168.94.33 关闭防火墙.SElinux 安装包地址 : 链 ... 
- 转载:必须收藏!50个最流行的免费Kubernetes工具集
		必须收藏!50个最流行的免费Kubernetes工具集 http://cloud.51cto.com/art/201806/576406.htm 在短短的两年时间里,Kubernetes在容器编排的竞 ... 
- 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台
		参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ... 
随机推荐
- 跟踪调试Linux内核的启动过程
			跟踪调试Linux内核的启动过程---使用gdb 符钰婧 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ... 
- iOS自学-混合编程
			OC调用swift,引入头文件 #improt "工程名字-swift.h" swift调用OC,在桥梁文件里面引入OC文件 的头文件 尽情混合编程吧... 
- Alpha阶段项目Postmortem会议总结
			(一)设想和目标 1.我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要解决总是不知道在什么时间该做什么事情,或是老是忘记做一些事情的问题,通过添加事件 ... 
- 安卓端通过http对Mysql进行增删改查
			各类it学习视频,大家都可以看看哦!我自己本人都是通过这些来学习it只知识的! 下面是视频链接转自:http://www.cnblogs.com/yzxk/p/4749440.html Android ... 
- C#代码分析(第三周)
			阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ... 
- 路由器配置及IP设置及ping命令使用
			OSI的七层协议体系结构: 物理层.数据链路层.网络层.运输层.会话层.表示层.应用层 TCP/IP是一个四层的体系结构: 网络接口层.网际层(互联网层)(IP或ARP或ICMP).运输层(TCP或U ... 
- Weka平台学习
			链接:http://www.cs.waikato.ac.nz/ml/weka/index.html 一简介: WEKA的全名是怀卡托智能分析环境(Waikato Environment for Kno ... 
- Gulp插件笔记
			初次接触Gulp是出于网页模块化的需要,用过之后发现这个任务管理工具有很多实用的插件,意外地好用,于是打算写下这篇笔记把用到的Gulp插件记录一下.至于想了解Gulp基本用法的同学可以去Gulp官网查 ... 
- 11git更改提交
			.将不必要的文件add .上次提交觉得是错的 .不想改变暂存区内容,只是想调整提交的信息 .版本回滚 git reset HEAD 文件名 移除不必要的添加到暂存区的文件 git reset HEAD ... 
- json数据进行格式化
			<?php /** Json数据格式化 * @param Mixed $data 数据 * @param String $indent 缩进字符,默认4个空格 * @return JSON */ ... 
