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版本:

 https:

上面的操作是下载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.defaultE0315 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/

 



本文转自 msj0905 51CTO博客,原文链接:http://blog.51cto.com/sky66/1933998

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
7天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
17 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
5月前
|
Kubernetes Cloud Native Docker
Docker与Kubernetes集成以实现云原生应用程序:云原生在线教育平台
当将Docker与Kubernetes集成以实现云原生应用程序时,可以采用以下项目案例来详细解释:
|
5月前
|
Kubernetes 负载均衡 Cloud Native
如何将Docker与Kubernetes集成,实现云原生应用程序
在云原生应用程序开发中,Docker和Kubernetes通常是不可或缺的工具。Docker用于容器化应用程序和其依赖项,而Kubernetes用于自动化和编排容器的部署、扩展和管理。下面是如何将Docker与Kubernetes集成
113 0
|
11月前
|
Kubernetes Cloud Native jenkins
【云原生】Jenkins集成Kubernetes详解
【云原生】Jenkins集成Kubernetes详解
202 1
|
消息中间件 存储 前端开发
硬核!SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
硬核!SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
382 0
硬核!SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
|
Kubernetes Cloud Native jenkins
【云原生】DevOps(八):Jenkins集成Kubernetes
【云原生】DevOps(八):Jenkins集成Kubernetes
275 0
|
Kubernetes Java jenkins
自动化集成:Pipeline整合Docker+K8S
可以根据各个业务的需要,参考流水线组件的功能文档,不断引入更好的方式去优化流程,最终会形成一个持续交付的自动流程,并且不会对代码层面带来改造成本。
311 0
自动化集成:Pipeline整合Docker+K8S
|
Kubernetes 前端开发 持续交付
自动化集成:Kubernetes容器引擎详解
Kubernetes简称K8S,是一个开源的分布式的容器编排引擎,用来对容器化应用进行自动化部署和管理,让部署容器化的应用简单并且高效,支持自动化部署、大规模可伸缩、应用容器化管理。
332 0
自动化集成:Kubernetes容器引擎详解
|
存储 Kubernetes 安全
K8S与Vault集成,进行Secret管理
K8S与Vault集成,进行Secret管理
K8S与Vault集成,进行Secret管理
|
SQL 消息中间件 资源调度
Flink 1.10 正式发布!——与Blink集成完成,集成Hive,K8S
Apache Flink社区宣布Flink 1.10.0正式发布! 本次Release版本修复1.2K个问题,对Flink作业的整体性能和稳定性做了重大改进,同时增加了对K8S,Python的支持。 这个版本标志着与Blink集成的完成,并且强化了流式SQL与Hive的集成,本文将详细介绍新功能和主要的改进。
235 0
Flink 1.10 正式发布!——与Blink集成完成,集成Hive,K8S