文章采集api(MetricsAPI介绍Metrics-Server之前,必须要提一下API的概念)

优采云 发布时间: 2021-11-12 11:22

  文章采集api(MetricsAPI介绍Metrics-Server之前,必须要提一下API的概念)

  概述

  从v1.8开始,可以通过Metrics API的形式获取资源使用监控。具体的组件是Metrics Server,用来替代之前的heapster。heapster 从 1.11 开始逐渐被废弃。

  Metrics-Server 是集群核心监控数据的聚合器。从Kubernetes1.8开始,在kube-up.sh脚本创建的集群中默认部署为Deployment对象。如果是其他部署方式,则需要单独安装。, 或者咨询相应的云厂商。

  指标 API

  在介绍 Metrics-Server 之前,不得不提一下 Metrics API 的概念

  与之前的监控采集方法(hepaster)相比,Metrics API是一个全新的思路。官方希望核心指标的监控稳定,版本可控,用户可以直接访问(比如使用kubectl top命令),或者集群中的控制器(比如HPA)使用,就像其他Kubernetes一样蜜蜂。

  官方放弃heapster项目,是将核心资源监控当成一等公民,即通过api-server或client直接访问,如pod和service,而不是安装一个heapster,由heapster单独采集和管理。

  假设我们为每个pod和节点采集10个指标,从k8s的1.6开始,支持5000个节点和每个节点30个pod,假设采集的粒度为每分钟一次,那么:

  10 x 5000 x 30 / 60 = 25000 平均每分钟2万多个采集指标

  因为k8s的api-server将所有数据持久化在etcd中,显然k8s本身无法处理采集的这种频率,而且这种监控数据变化很快,而且是临时数据,所以需要单独的组件来处理,k8s版本只是部分存储在内存中,因此metric-server的概念诞生了。

  其实Hepaster已经暴露了API,但是Kubernetes的用户和其他组件必须通过master代理访问,而且Hepaster的接口不像api-server那样有完整的认证和客户端集成。这个api还在alpha阶段(8月18日),希望能达到GA阶段。以 api-server 风格编写:通用 apiserver

  有了Metrics Server组件,采集已经到达需要的数据,暴露了api,但是因为api需要统一,如何将请求转发到api-server /apis/metrics请求到Metrics Server ? 解决方案即:kube-aggregator,在k8s的1.7中已经完成。Metrics Server 之前没有发布,在 kube-aggregator 的步骤中延迟了。

  kube-aggregator(聚合api)主要提供:

  详细设计文档:参考链接

  metric api的使用:

  喜欢:

  http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes

http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes/

http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespace//pods/

  度量服务器

  Metrics 服务器定期从 Kubelet 的 Summary API(类似于 /ap1/v1/nodes/nodename/stats/summary)获取指标信息采集。这些聚合后的数据会存储在内存中,并以metric-api的形式暴露出去。

  Metrics server复用api-server库来实现自己的功能,比如认证、版本等,为了将数据存储在内存中,去掉默认的etcd存储,引入内存存储(即实现Storage接口)。因为是存储在内存中,所以监控数据不是持久化的,可以通过第三方存储进行扩展,与heapster一致。

  

  Metrics服务器出现后,新的Kubernetes监控架构将如上图所示

  官方地址:

  用

  如上所述,metric-server是一个扩展的apiserver,依赖kube-aggregator,所以需要在apiserver中开启相关参数。

  --requestheader-client-ca-file=/etc/kubernetes/certs/proxy-ca.crt

--proxy-client-cert-file=/etc/kubernetes/certs/proxy.crt

--proxy-client-key-file=/etc/kubernetes/certs/proxy.key

--requestheader-allowed-names=aggregator

--requestheader-extra-headers-prefix=X-Remote-Extra-

--requestheader-group-headers=X-Remote-Group

--requestheader-username-headers=X-Remote-User

  安装文件下载地址:1.8+,注意修改镜像地址为国内镜像

  kubectl create -f metric-server/

  

  安装成功后访问地址api地址为:

  

  Metrics Server 的资源消耗会随着集群中 Pod 数量的不断增长而不断上升,因此需要

  插件调整器垂直缩放这个容器。addon-resizer 根据集群中的节点数对 Metrics Server 进行线性扩展,以确保其能够提供完整的指标 API 服务。具体参考:链接

  其他

  基于 Metrics Server 的 HPA:参考链接

  在kubernetes新的监控系统中,metrics-server属于Core metrics,提供API metrics.k8s.io,只提供Node和Pod的CPU和内存使用情况。Other Custom Metrics(自定义指标)由Prometheus等组件完成,后续文章会对自定义指标进行分析。

  本文为容器监控实践系列文章,完整内容请看:container-monitor-book

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线