Kubernetes监控Heapster介绍
什么是Heapster?
Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS。
Kubernetes有个出名的监控agent—cAdvisor。在每个kubernetes Node上都会 运行cAdvisor,它会收集本机以及容器的监控数据(cpu,memory,filesystem,network,uptime)。
在较新的版本中,K8S已经将cAdvisor功能集成到kubelet组件中。每个Node节点可以直接进行web访问。
cAdvisor web界面访问: http://< Node-IP >:4194
cAdvisor也提供Restful API: https://github.com/google/cadv … pi.md
Heapster是一个收集者,将每个Node上的cAdvisor的数据进行汇总,然后导到第三方工具(如InfluxDB)。
框架图:
Heapster首先从K8S Master获取集群中所有Node的信息,然后通过这些Node上的kubelet获取有用数据,而kubelet本身的数据则是从cAdvisor得到。所有获取到的数据都被推到Heapster配置的后端存储中,并还支持数据的可视化。现在后端存储 + 可视化的方法,如InfluxDB + grafana。
Heapster使用
这里主要介绍Heapster的API使用,及可获取的Metrics。
参考资料:
API文档: https://github.com/kubernetes/ … el.md
Metrics: https://github.com/kubernetes/ … ma.md
API文档及可用Metrics在官方文档中都介绍的比较齐全。下面用几条测试命令来解释API使用:
获取支持的metrics
curl -L http://<heapster-IP>:8082/api/v1/model/metrics
列出所有的Nodes支持的metrics
curl -L http://<heapster-IP>:8082/api/v1/model/nodes/metrics
查看对应Pod的cpu使用率
curl -L http://<heapster-IP>:8082/api/v1/model/namespaces/<namespace-name>/pods/<pod-name>/metrics/cpu-usage
Heapster系统部署
我们采用Heapster以InfluxDB作为数据存储后端,再配合Grafana的前端进行数据可视化的系统监控方案,进行部署。
镜像制作:
Heapster的版本:v0.19.0
没有采用最新的Heapster版本,是因为我们使用的Kubernets版本为较旧的v1.0.3,较新的Heapster版本不兼容该K8S版本。
Heapster镜像:
进入heapster-0.19.0//deploy/docker,使用build.sh进行镜像制作。 该脚本会依赖go环境进行heapster源码编译,所以需要提前安装go环境(go和godep的安装)。
InfluxDB和Grafana镜像:
这两个镜像的Dockerfile分别在根目录下的对应文件中,只需查看Makefile进行对应的命令编译制作镜像即可。Dockerfile会依赖一些基础镜像,最好提前下载好。
容器的运行
Heapster容器的运行可以依赖Kubernetes进行部署,也可以单独使用docker命令进行部署。
Kubernetes部署:
直接依赖heapster-0.19.0/deploy/kube-config/influxdb/目录下的yaml文件,
使用kubectl create -f heapster-0.19.0/deploy/kube-config/influxdb/命令进行部署。
我们没有采用该方式,是考虑到如果K8S和监控系统相互依赖,会导致K8S异常之后,存在监控系统无法使用的隐患。
但是直接使用单独的容器进行部署,也需要考虑到监控容器异常退出了,谁来维护重启?
需要进行权衡?
还需要注意一点:Heapster会使用内存进行数据缓存,容易撑爆内存,导致容器OOM
Docker命令部署:
使用docker命令进行部署的话,需要传入各种参数,该参数可以参考kubernetes部署使用到的yaml文件。
具体命令如下:
InfluxDB:
docker run -p 8083:8083 -p 8086:8086 --net=host -v /data heapster_influxdb:canary
注:data是数据存储目录,需要考虑数据可持久化,并且能保证容器重启不影响数据。
Grafana:
docker run -p 3000:3000 --net=host -e INFLUXDB_SERVICE_URL=http://<influxdb-ip>:8086 -e GF_AUTH_BASIC_ENABLED="false" -e GF_AUTH_ANONYMOUS_ENABLED="true" -e GF_AUTH_ANONYMOUS_ORG_ROLE="Admin" -e GF_SERVER_ROOT_URL=/ -v /var heapster_grafana:canary
Heapster:
docker run -it -p 8082:8082 --net=host heapster:canary --source=kubernetes:http://<k8s-server-ip>:8080?inClusterConfig=false\&useServiceAccount=false --sink=influxdb:http://<influxdb-ip>:8086
Heapster命令参考相对较为重要,可以参考官方文档,具体如下:
–source: 指定数据获取源。这里我们指定kube-apiserver即可。
后缀参数:
inClusterConfig:
kubeletPort: 指定kubelet的使用端口,默认10255
kubeletHttps: 是否使用https去连接kubelets(默认:false)
apiVersion: 指定K8S的apiversion
insecure: 是否使用安全证书(默认:false)
auth: 安全认证
useServiceAccount: 是否使用K8S的安全令牌
–sink: 指定后端数据存储。这里指定influxdb数据库。
后缀参数:
user: InfluxDB用户
pw: InfluxDB密码
db: 数据库名
secure: 安全连接到InfluxDB(默认:false)
withfields: 使用InfluxDB fields(默认:false)。可以参考Here
本文转自中文社区-Kubernetes监控Heapster介绍
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kubeadm 搭建 Kubernetes 集群
一、环境准备 首先环境还是三台 虚拟机,虚拟机地址如下 IP 地址 节点 192.168.1.167 master 192.168.1.189 node1 192.168.1.176 node2 然后每台机器安装好 docker,至于 rpm 安装包版本下面介绍 二、说点正经事 2.1、安装包从哪来 官方的文档页面更新并不及时,同时他的 yum 源更新也很慢,再者…那他妈可是 Google 的服务器,能特么连上吗?以前总是在国外服务器使用 yumdownloader 下载,然后 scp 到本地,虽然能解决问题,但是蛋碎一地…最后找到了源头,如下 Kubernetes 编译的各种发行版安装包来源于 Github 上的另一个叫 release 的项目,地址 点这里,把这个项目 clone 下来,由于本人是 Centos 用户,所以进入 rpm 目录,在安装好 docker 的机器上执行那个 docker-build.sh 脚本即可编译 rpm 包,最后会生成到当前目录的 output 目录下,截图如下 2.2、镜像从哪来 对的,没错,gcr.io 就是 Google 的域名,服务器更不用提...
- 下一篇
Kubernetes监控InfluxDB介绍
什么是InfluxDB? InfluxDB介绍 InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需 外部依赖。 该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。 InfluxDB特征: – 无结构(无模式):可以是任意数量的列 – 可以设置metric的保存时间 – 支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计 – 支持存储策略:可以用于数据的删改。(influxDB没有提供数据的删除与修改方法) – 支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配可以降低InfluxDB的系统占用量。 – 原生的HTTP支持,内置HTTP API – 支持类似sql语法 – 支持设置数据在集群中的副本数 – 支持定期采样数据,写入另外的measurement,方便分粒度存储数据。 – 自带web管理界面,方便使用(登入方式:http://< InfluxDB-IP >:8083) 关键概念 InfluxDB关键概念...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路