Kubernetes核心指标监控——Metrics Server详解

1、简介

Kubernetes Metrics Server是一个Kubernetes组件,用于收集和暴露Kubernetes集群中的资源使用情况和度量数据。它是Kubernetes自动扩展(Autoscaling)机制的重要组成部分,可以确保你的应用程序能够根据负载情况自动扩展或缩减。

2、主要功能

  • 资源使用率数据:Metrics Server收集有关CPU和内存使用率的数据,这些数据对于决定是否需要调整Pod的数量非常重要。
  • 自动扩展支持:Metrics Server的数据可用于配置Horizontal Pod Autoscaler(HPA),HPA可根据度量数据自动调整Pod的副本数量,以满足负载需求。
  • 实时性:Metrics Server提供实时数据,确保你可以及时采取措施来应对负载波动。

3、Metrics Server的工作原理

  • 收集数据:Metrics Server定期查询Kubernetes API以获取有关Pod、节点和容器的资源使用率数据。它从Kubelet、Heapster(如果安装了旧版Kubernetes监控解决方案)和其他资源获取这些数据。
  • 存储数据:Metrics Server将收集到的数据存储在内存中,以便可以快速访问。
  • 暴露API:Metrics Server通过HTTP API向Kubernetes组件和用户暴露这些数据。这意味着你可以使用kubectl或其他工具来查询Metrics Server以获取度量数据。
图片

Metrics Server从 Kubelet、cAdvisor 等获取度量数据,再由metrics-server提供给 Dashboard、HPA 控制器等使用。本质上metrics-server相当于做了一次数据的转换,把cadvisor格式的数据转换成了kubernetes的api的json格式。由此我们不难猜测,metrics-server的代码中必然存在这种先从metric中获取接口中的所有信息,再解析出其中的数据的过程。我们给metric-server发送请求时,metrics-server中已经定期从中cadvisor获取好数据了,当请求发过来时直接返回缓存中的数据。

4、缺少组件

[root@i-cd6217fb k8s]# kubectl top nodes
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)

5、下载部署清单

#修改镜像 k8s.gcr.io/metrics-server/metrics-server:v0.6.2 -> admin4j/metrics-server:v0.6.2
[root@i-cd6217fb k8s]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.2/components.yaml

6、安装部署清单

[root@i-cd6217fb k8s]# kubectl apply -f components.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader cr                                                                                   eated
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-d                                                                                   elegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server create                                                                                   d
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

7、验证Metrics Server组件部署成功

#查看原生apiserver是否有metrics.k8s.io/v1beta1
[root@i-cd6217fb k8s]# kubectl api-versions|grep metrics
metrics.k8s.io/v1beta1

8、查看metrics server pod是否运行正常

[root@i-cd6217fb k8s]# kubectl get pods -n=kube-system |grep metrics
kube-state-metrics-687fd4996c-66jmv   1/1     Running   0         4d22h
metrics-server-6677589b97-8c6ft       1/1     Running   0         65s

9、使用kubectl top 命令查看node的cpu ,内存占比

[root@i-cd6217fb k8s]# kubectl top nodes
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
local-node   372m         9%     2500Mi          31%

阅读原文


作者简介: 一个热爱技术的运维开发,欢迎关注IT运维大爆炸公众号,技术干货第一时间送达!

声明:文中观点不代表本站立场。本文传送门:http://eyangzhen.com/321496.html

联系我们
联系我们
分享本页
返回顶部