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%
声明:文中观点不代表本站立场。本文传送门:http://eyangzhen.com/321496.html