当前位置: 首页 > news >正文

kubernetes 监控方案之:heapster+influxdb+grafana(十八)

heapster 已经 deprecated 了:https://github.com/kubernetes/heapster ,所以下面的演示主要针对 Kubernetes 1.10 之前的版本,我这里是新版本,所以是收集不到数据的。

一、Heapster 介绍

Heapster 是容器集群监控和性能分析工具,天然的支持 Kubernetes 和 CoreOS。

Kubernetes 有个出名的监控 agent—cAdvisor。在每个 kubernetes Node 上都会运行 cAdvisor,它会收集本机以及容器的监控数据 (cpu,memory,filesystem,network,uptime)。在较新的版本中,K8S 已经将 cAdvisor 功能集成到 kubelet 组件中。每个 Node 节点可以直接进行
web 访问。

Heapster 是一个收集者,Heapster 可以收集 Node 节点上的 cAdvisor 数据,将每个 Node 上的 cAdvisor 的数据进行汇总,还可以按照 kubernetes 的资源类型来集合资源,比如 Pod、Namespace,可以分别获取它们的 CPU、内存、网络和磁盘的 metric。默认的 metric 数据聚合时间间隔是1分钟。还可以把数据导入到第三方工具(如 InfluxDB)。

Kubernetes 原生 dashboard 的监控图表信息来自 heapster。在 Horizontal Pod Autoscaling 中也用到了 Heapster,HPA 将 Heapster 作为 Resource Metrics API,向其获取 metric。

架构图
kubernetes 监控方案之:heapster+influxdb+grafana(十八)

kubernetes 监控方案之:heapster+influxdb+grafana(十八)

Heapster 首先从 apiserver 获取集群中所有 Node 的信息,然后通过这些 Node 上的 kubelet 获取有用数据,而 kubelet 本身的数据则是从 cAdvisor 得到。所有获取到的数据都被推到 Heapster 配置的后端存储中,并还支持数据的可视化。现在后端存储 + 可视化的方法,如InfluxDB + grafana。

二、部署

Heapster 本身是一个 Kubernetes 应用,部署方法很简单,运行如下命令:

[root@master ~]# git clone https://github.com/kubernetes/heapster.git
[root@master ~]# kubectl apply -f heapster/deploy/kube-config/influxdb/
deployment.extensions/monitoring-grafana created
service/monitoring-grafana created
serviceaccount/heapster created
deployment.extensions/heapster created
service/heapster created
deployment.extensions/monitoring-influxdb created
service/monitoring-influxdb created
[root@master ~]# kubectl apply -f heapster/deploy/kube-config/rbac/heapster-rbac.yaml
clusterrolebinding.rbac.authorization.k8s.io/heapster created

因为众所周知的原因,有些镜像我们是下载不下来,只能间接的获取,我们还是在阿里云的仓库里面找一下。

docker pull registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4
docker tag registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4 k8s.gcr.io/heapster-amd64:v1.5.4
docker image rm registry.cn-hangzhou.aliyuncs.com/k8s_grc_io/heapster-amd64:v1.5.4

docker pull registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4
docker tag registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4 k8s.gcr.io/heapster-grafana-amd64:v5.0.4
docker image rm registry.cn-hangzhou.aliyuncs.com/k8s-kernelsky/heapster-grafana-amd64:v5.0.4

docker pull registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2
docker tag registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2 k8s.gcr.io/heapster-influxdb-amd64:v1.5.2
docker image rm registry.cn-hangzhou.aliyuncs.com/k8s-images1/heapster-influxdb-amd64:v1.5.2

Heapster 相关资源如下:

[root@master ~]# kubectl get pod -n kube-system |grep -e heapster -e monitor
heapster-f64999bc-8x7j7                      1/1     Running   0          16m
monitoring-grafana-564f579fd4-jsx2r          1/1     Running   0          16m
monitoring-influxdb-8b7d57f5c-ntnxc          1/1     Running   0          16m
[root@master ~]# kubectl get deploy -n kube-system |grep -e heapster -e monitor
heapster              1/1     1            1           16m
monitoring-grafana    1/1     1            1           16m
monitoring-influxdb   1/1     1            1           16m
[root@master ~]# kubectl get svc -n kube-system |grep -e heapster -e monitor
heapster              ClusterIP   10.101.170.222   <none>        80/TCP          16m
monitoring-grafana    ClusterIP   10.104.60.71     <none>        80/TCP          16m
monitoring-influxdb   ClusterIP   10.104.104.41    <none>        8086/TCP        16m

为便与访问,可以通过 kubectl editService monitoring-grafana的类型修改为 NodePort

[root@master ~]# kubectl patch svc monitoring-grafana -p '{"spec":{"type":"NodePort"}}' -n kube-system
service/monitoring-grafana patched

目前我们的 Pod heapster,是采集不到数据的,因为已经被废弃,大家可以通过下面的命令查看到错误信息。

kubectl logs heapster-f64999bc-8x7j7 -n kube-system

三、使用

浏览器打开 Grafana 的 Web UI:http://MASTER_IP:32314/

Heapster 已经预先配置好了 Grafana 的 DataSource 和 Dashboard。

kubernetes 监控方案之:heapster+influxdb+grafana(十八)

Heapster 预定义的 Dashboard 很直观也很简单。如有必要,可以在 Grafana 中定义自己的 Dashboard 满足特定的业务需求。

转载于:https://blog.51cto.com/wzlinux/2334719

相关文章:

  • Servlet-生命周期
  • CSS 文字太多用省略号表示
  • 互联网轻量级框架SSM-查缺补漏第四天
  • 无需Java代码通过JHipster生成有安全验证的微服务应用
  • BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP
  • JS变量作用域
  • android环境搭建
  • Windows10 VS2017 C++多线程传参和等待线程结束
  • ZooKeeper的安装与部署
  • Vue.js常用指令:v-on
  • 如何设计一个比特币钱包服务
  • JS 编译器都做了啥?
  • 如何判断/获取屏幕的状态(亮屏已解锁,亮屏未解锁,黑屏)
  • CSS3 animation 练习
  • 腾讯从百度挖来的AI Lab负责人张潼离职,要去阿里?
  • [deviceone开发]-do_Webview的基本示例
  • 【comparator, comparable】小总结
  • 4个实用的微服务测试策略
  • CentOS从零开始部署Nodejs项目
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS实用技巧
  • FineReport中如何实现自动滚屏效果
  • jdbc就是这么简单
  • quasar-framework cnodejs社区
  • uni-app项目数字滚动
  • 阿里云前端周刊 - 第 26 期
  • 开发基于以太坊智能合约的DApp
  • 来,膜拜下android roadmap,强大的执行力
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 嵌入式文件系统
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 我从编程教室毕业
  • 小而合理的前端理论:rscss和rsjs
  • 原生js练习题---第五课
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 阿里云移动端播放器高级功能介绍
  • 从如何停掉 Promise 链说起
  • ​第20课 在Android Native开发中加入新的C++类
  • (3)STL算法之搜索
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十八)SpringBoot之发送QQ邮件
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)memcache、redis缓存
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • @javax.ws.rs Webservice注解
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [Android Studio] 开发Java 程序
  • [C\C++]读入优化【技巧】
  • [ISITDTU 2019]EasyPHP