部署架构 下图是该方案的部署架构,主要包括: 利用Heapster收集K8s的性能数据,包含CPU,Memory,Network,File System等 利用Heapster的Statsd Sink, cd heapster make container 运行以上的命令来编译最新的heapster镜像。 注意,heapster缺省使用udp协议,如果想要使用tcp,需要修改代码 https://github.com/kubernetes/heapster/blob/master/metrics/sinks 安装配置Heapster 在K8s上部署heapster比较容易,创建对应的yaml配置文件,然后用kubectl命令行创建就好了。 运行 kubectl apply -f *.yaml 来部署heapster 如果正常运行,对应的heapster pod的日志如下 I0117 18:10:56.054746 1 heapster.go
依赖镜像入下: gcr.io/google_containers/heapster-amd64:v1.4.0 gcr.io/google_containers/heapster-influxdb-amd64 $ kubectl create -f deploy/kube-config/influxdb/ delpoyment "heapster" created service "heapster" created 通过 heapster.yaml 文件可以看到, command: - /heapster - --source=kubernetes:https://kubernetes.default 解决方法有两种: 1、通过参考 Github Heapster 配置数据源文档 Heapster source-configuration,修改配置数据源为 --source=kubernetes:http 修改 heapster.yaml command: - /heapster #- --source=kubernetes:https://kubernetes.default
监控组件 - Heapster 部署 Heapster 用于计算并分析集群资源利用率、监控集群容器 1、下载官方提供的 Heapster 组件部署的 yaml 文件 # 新建文件夹,用于存放 Heapster 部署所需的 yaml 文件 mkdir heapster cd heapster # 获取相关 yaml 文件 wget https://raw.githubusercontent.com/kubernetes /heapster/master/deploy/kube-config/influxdb/heapster.yaml wget https://raw.githubusercontent.com/kubernetes /heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml 2、修改 yaml 中 image 的值 k8s.gcr.io 全部修改为 registry.cn-hangzhou.aliyuncs.com /google_containers 3、部署 Heapster kubectl create -f heapster/ 4、几分钟后,刷新 Dashboard 面板 ?
Heapster是谷歌开源的集群监控数据收集工具,会所有节点监控数据,Heapster作为一个pod在集群中运行,通过API获得集群中的所有节点,然后从节点kubelet暴露的10255汇总数据。 目前社区用Metrics Server 取代 Heapster。 InfluxDB:时序数据库,存储监控数据。 Grafana:可视化展示。 在1.8+弃用,metrics-server取代 部署heapster组件 [root@localhost monitor]# cat heapster.yaml apiVersion: v1 kind spec: serviceAccountName: heapster containers: - name: heapster image: unchanged clusterrolebinding.rbac.authorization.k8s.io/heapster unchanged deployment.extensions/heapster
k8s监控组件heapster安装部署 参考文档 https://github.com/kubernetes/heapster/tree/master/deploy k8s集群安装部署 http://jerrymin.blog 源代码 由于我安装了2个版本的所以都记录了下: 版本一: https://github.com/kubernetes/heapster 发现要在k8s集群上跑heapster,需要安装InfluxDB与 /docs/google.md git clonehttps://github.com/kubernetes/heapster cd heapster/deploy/ 注意修改一个配置,这样没有https 认证时才能和dashboard连接起来 vimdeploy/kube-config/influxdb/heapster-deployment.yaml - /heapster -791010959-npzc9 -n kube-system I0223 06:37:52.935620 1 heapster.go:71] /heapster--source=kubernetes
工具介绍 1.1 heapster Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS。 Kubernetes有个出名的监控agent—cAdvisor。 在Horizontal Pod Autoscaling中也用到了Heapster,HPA将Heapster作为Resource Metrics API,向其获取metric。 架构图: ? +influxdb+grafana安装yaml文件 到 heapster release 页面下载最新版本的 heapster: wget https://github.com/kubernetes/heapster 2.2.1 heapster配置 修改heapster.yml配置文件: apiVersion: v1 kind: ServiceAccount metadata: name: heapster 3.Heapster使用 这里主要介绍Heapster的API使用,及可获取的Metrics。
二、heapster安装 1.安装文件和镜像下载 安装文件下载: [root@master ~]# git clone https://github.com/kubernetes-retired/heapster.git /google_containers/heapster-influxdb-amd64:v1.5.2 k8s.gcr.io/heapster-influxdb-amd64:v1.5.2 [root@node02 grafana.yaml、influxdb.yaml、heapster.yaml和heapster-rbac.yaml ? 修改heapster.yaml中的source和sink参数 source: 指定数据获取源 source参数 说明 inClusterConfig 在与heapster的命名空间关联的服务帐户中使用kube 修改heapster-rbac.yaml,将权限修改为cluster-admi 3.执行安装 [root@master kube-config]# pwd /root/heapster-master/deploy
采用的是Heapster+Influxdb+Grafana建立集群性能监控平台。 据说Heapster需要与Kubernetes Master进行安全连接,所以需要对集群进行安全认证,我的集群环境已经进行了安全认证。 非安全认证的集群能否使用Heapster,我没有验证。 index.tenxcloud.com/jimmy/heapster-amd64:v1.3.0-beta.1 index.tenxcloud.com/jimmy/heapster-influxdb-amd64 : - name: heapster image: 192.168.121.140:5000/heapster-amd64 imagePullPolicy: kubernetes.io/cluster-service: 'true' kubernetes.io/name: Heapster name: heapster namespace:
二、heapster安装 1.安装文件和镜像下载 安装文件下载: [root@master ~]# git clone https://github.com/kubernetes-retired/heapster.git /google_containers/heapster-influxdb-amd64:v1.5.2 k8s.gcr.io/heapster-influxdb-amd64:v1.5.2 [root@node02 /google_containers/heapster-amd64:v1.5.4 registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-influxdb-amd64 grafana.yaml、influxdb.yaml、heapster.yaml和heapster-rbac.yaml [图片.png] 修改grafana.yaml,port类型为NodePort,nodePort created deployment.extensions/heapster created service/heapster created deployment.extensions/monitoring-influxdb
另外heapster的数据源和外部存储都是可插拔的,所以可以很灵活的组建出很多监控方案,如:Heapster+ElasticSearch+Kibana等等。 : heapster containers: - name: heapster image: k8s.gcr.io/heapster-amd64:v1.4.2 kubernetes.io/cluster-service: 'true' kubernetes.io/name: Heapster name: heapster namespace: 为heapster指定获取集群信息的数据源。 留下了一个的坑,请继续往下看,当我部署完heapster,查看Heapster容器组的标准输出: 很多人都以为是https或者k8s配置的问题,于是去就慌忙的去配置InSecure http方式
的安装 1.下载官方提供的yaml文件 # 新建文件夹,用于存放 Heapster 部署所需的 yaml 文件mkdir heapster cd heapster# 获取相关 yaml 文件wget serviceAccountName: heapster containers: - name: heapster # image: k8s.gcr.io 可能出现heapster的收集不到数据的过程 此处是权限不足的问题 修改ClusterRole: system:heapster的权限: 1. 查看system:heapster yaml格式, 保存为 heapster-clusterrole.yaml yaml [root@node01 heapster-yaml]# kubectl get 删除heapster重新部署 kubectl delete -f heapster.yaml kubectl apply -f heapster.yaml 可视化 - Gafana 面板 修改
那我们可以去访问下: http://192.168.161.163:8888 部署 heapster 插件 下载安装文件 # wget https://github.com/kubernetes/heapster /heapster-1.5.0/ [[email protected] heapster-1.5.0]# kubectl create -f deploy/kube-config/influxdb/ " created deployment "heapster" created service "heapster" created deployment "monitoring-influxdb" created /kube-config/rbac/heapster-rbac.yaml clusterrolebinding "heapster" created 登录dashboard ? /heapster-amd64:v1.4.2 gcr.io/google_containers/heapster-influxdb-amd64:v1.3.3 docker pull registry.cn-hangzhou.aliyuncs.com
17 18 [root@k8s-master heapster]# unzip heapster-influxdb.zip 19 Archive: heapster-influxdb.zip 20 : heapster-influxdb/heapster-controller.yaml 23 inflating: heapster-influxdb/heapster-service.yaml /influxdb-service.yaml 26 [root@k8s-master heapster]# ls 27 heapster-influxdb heapster-influxdb.zip 1 [root@k8s-master heapster-influxdb]# ls 2 grafana-service.yaml heapster-controller.yaml heapster-service.yaml 1 [root@k8s-master heapster-influxdb]# ls 2 grafana-service.yaml heapster-controller.yaml heapster-service.yaml
目前,HPA可以从两种取到获取数据: Heapster(稳定版本,仅支持CPU使用率,在使用腾讯云容器服务时,需要手动安装)。 自定义的监控(alpha版本,不推荐用于生产环境) 。 如何使用 在上文的介绍中我们知道,HPA Controller有两种途径获取监控数据:Heapster和自定义监控,由于自定义监控一直处于alpha阶段,所以本文这次主要介绍在腾讯云容器服务中使用基于Heapster 腾讯云容器服务没有默认安装Heapster,所以如果需要使用HPA需要手动安装。 4.1 创建Heapster 创建Heapster ServiceAccount apiVersion: v1 kind: ServiceAccount metadata: name: heapster =exponential serviceAccountName: heapster 创建Heapster Service kind: Service apiVersion: v1 metadata
Heapster 在kubernets1.13之前,收集资源指标是Heapster,它是一个收集者,它从cAdvisor中收集数据并暂时存储,如果要永久存储,则要借助时序数据库,比如InfluxD,然后用 - kind: ServiceAccount name: heapster namespace: kube-system 部署heapster: apiVersion: v1 kind: ServiceAccount k8s-app: heapster spec: serviceAccountName: heapster containers: - name : heapster image: k8s.gcr.io/heapster-amd64:v1.5.4 imagePullPolicy: IfNotPresent kubernetes.io/cluster-service: 'true' kubernetes.io/name: Heapster name: heapster namespace:
v1.3.3 gcr.io/google_containers/heapster-grafana-amd64 v4.4.3 gcr.io/google_containers/heapster-amd64 -v4.4.3:v4.4.3 heapster-influxdb-amd64-v1.3.3:v1.3.3 heapster-amd64-v1.4.0:v1.4.0) for imageName $kubectl logs -f pod/heapster-3848557544-1548b -n kube-system 通过日志可以发现,在 heapster-3848557544-1548b 解决方法有两种: 1、通过参考 Github Heapster 配置数据源文档 Heapster source-configuration,修改配置数据源为 --source=kubernetes: 解决这个方案是增加了一个 heapster-rbac.yaml 文件,定义一个名为 heapster 的 ServiceAccount,然后将它和 Cluster Role view 绑定。
OCP使用Hawkular作为Heapster的存储引擎。 Heapster项目是由Kubernetes社区孵化的,目的是为第三方应用程序提供一种从Kubernetes集群捕获性能数据的方法。 Heapster收集节点及其容器的指标,然后聚合pod、namespace和整个集群的指标。 OpenShift不向集群外部公开Heapster组件。外部应用程序需要访问Heapster必须使用OpenShift master API代理。 Heapster和Hawkular部署使用标准的OpenShift工具部署size、比例和调度。 少量Heapster和Hawkular pods可以管理数百个OpenShift节点和数千个项目的指标。 可以使用oc命令配置Heapster和Hawkular部署。
: [""] resources: ["services/proxy"] resourceNames: ["heapster", "http:heapster:", "https:heapster: /login 安装heapster $ kubectl create -f kube-heapster/influxdb/ $ kubectl create -f kube-heapster/ rbac/ heapster文件信息: [root@node01 ~]# tree kube-heapster/kube-heapster/├── influxdb│ ├── grafana.yaml │ ├── heapster.yaml│ └── influxdb.yaml└── rbac └── heapster-rbac.yaml grafana.yaml apiVersion : - name: heapster image: registry.cn-hangzhou.aliyuncs.com/k8sth/heapster-amd64:v1.4.2
问题分析:Heapster是容器集群监控和性能分析工具,HPA、Dashborad、Kubectl top都依赖于heapster收集的数据。 但是Heapster从kubernetes 1.8以后已经被遗弃了,被metrics-server所替代… 解决办法 :安装 heapster。 heapster.yaml apiVersion: v1 kind: ServiceAccount metadata: name: heapster namespace: kube-system spec: serviceAccountName: heapster containers: - name: heapster # image kubernetes.io/cluster-service: 'true' kubernetes.io/name: Heapster name: heapster namespace:
依赖镜像入下: gcr.io/google_containers/heapster-amd64:v1.4.0 gcr.io/google_containers/heapster-influxdb-amd64 $ kubectl create -f deploy/kube-config/influxdb/ delpoyment "heapster" created service "heapster" created 通过 heapster.yaml 文件可以看到, command: - /heapster - --source=kubernetes:https://kubernetes.default 解决方法有两种: 1、通过参考 Github Heapster 配置数据源文档 Heapster source-configuration,修改配置数据源为 --source=kubernetes: 修改 heapster.yaml command: - /heapster #- --source=kubernetes:https://kubernetes.default