网站首页 > 开源技术 正文
前言
在学习Kubernetes时,关于kubectl top命令查看不了工作节点或者Pod对象的资源使用情况,出现报错"error: Metrics API not available"。查看官方文档才发现这一个资源指标监控工具默认是没有部署的,需要手动部署。下面就简单了解一下这个工具是什么?有什么用?怎么安装?怎么用?
一、Metrics Server是什么?
从两篇官方文档大概了解Metrics Server是什么,用来干嘛的:
https://kubernetes.io/zh/docs/tasks/debug-application-cluster/resource-metrics-pipeline/
https://github.com/kubernetes-sigs/metrics-server/
Metrics Server:资源指标监控服务器,是Kubernetes内置可扩展、高效的容器资源指标来源。例如Pod中容器或工作节点的CPU 和内存使用率,可通过Metrics API 在 Kubernetes 中获得。并且可结合HPA(Horizontal Pod Autoscalers)实现Pod资源的自动伸缩。
二、Metrics Server API是什么?
Metrics Server从Kubelet API 收集指标,通过Kubernetes聚合器注册在Master API Server中。为集群提供Node、Pods资源利用率指标。当我们使用kubectl top对资源获取指标,Metrics Server一般会有以下几步操作:
发起获取指标数据:kubectl top --> api server--> Metrics Server -->kubelet(cadvisor)-->pod
返回指标数据:pod-->kubelet-->Metrics Server api-->api server-->client
三、Metrics Server性能与功能
- 适用于大多数集群的单一部署
- 快速自动缩放,每 15 秒收集一次指标
- 资源消耗少,为集群中的每个节点使用1毫厘CPU 内核和 2 MB 内存
- 可扩展支持多达 5,000 个节点集群
- 基于 CPU/内存的水平自动缩放
- 自动调整/建议容器所需的资源
四、Metrics Server版本兼容性
Metrics Server版本 Metrics API 组/版本 支持的 Kubernetes 版本
0.6.x metrics.k8s.io/v1beta1 *1.19+
0.5.x metrics.k8s.io/v1beta1 *1.8+
0.4.x metrics.k8s.io/v1beta1 *1.8+
0.3.x metrics.k8s.io/v1beta1 1.8-1.21
五、Kubernetes 1.20安装Metrics Server
Metrics Server版本更新记录:https://github.com/kubernetes-sigs/metrics-server/releases
5.1 下载yaml文件
[root@k8s-master ~]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml
5.2 修改yaml文件
主要修改三个地方:
由于官方的yaml文件默认拉取镜像的地址是k8s.gcr.io的,国内无法访问,因此需要修改镜像拉取地址。
由于Metrics Server默认是基于https通信,因此在kubelet组件与它通信时,需要配置不验证https证书。添加--kubelet-insecure-tls参数,不验证kubelet提供的https证书
修改metrics-server容器监听的端口为1000以上
[root@k8s-master ~]# mv components.yaml metrics-server.yaml #修改yaml文件名称
[root@k8s-master ~]# vim metrics-server.yaml
添加- --kubelet-insecure-tls
- --secure-port=443 修改为 - --secure-port=4443
image: k8s.gcr.io/metrics-server/metrics-server:v0.5.0 修改为 registry.cn-shenzhen.aliyuncs.com/zengfengjin/metrics-server:v0.5.0
- containerPort: 443 修改为 - containerPort: 4443
其中registry.cn-shenzhen.aliyuncs.com/zengfengjin/metrics-server:v0.5.0为我自己在阿里云的镜像仓库里面拉取metrics-server:v0.5.0的镜像。
由于Pod需要监听1000以下的端口需要root权限,如果不修改- --secure-port与containerPort的值大于1000的话,在启动容器时会报错:"panic: failed to create listener: failed to listen on 0.0.0.0:443: listen tcp 0.0.0.0:443: bind: permission denied
5.3 创建metrics-server
[root@k8s-master ~]# kubectl apply -f metrics-server.yaml
[root@k8s-master ~]# kubectl get pods metrics-server -n kube-system #yaml文件部署的metrics-server,pod对象会隶属于kube-system命名空间下。因此在查看metrics-server pod对象时需要加-n指定命名空间
[root@k8s-master ~]# kubectl describe pods metrics-server-d8765cc78-krkz2 -n kube-system #查看metrics-server创建过程
[root@k8s-master ~]# kubectl logs metrics-server-d8765cc78-krkz2 -n kube-system #查看启动过程
5.4 查看node与pod资源利用率
CPU单位换算:可以写m也可以写浮点数,例如0.5=500m,1=1000m
[root@k8s-master ~]# kubectl top nodes
[root@k8s-master ~]# kubectl top pods -n kube-system #查看kube-system下各个pod的资源利用率
关于Metrics Server更多功能的体验,后面会持续更新。
猜你喜欢
- 2024-10-15 Docker命令大全:从基础管理到高级实践
- 2024-10-15 10分钟知晓这些Docker监控工具(docker swarm 监控)
- 2024-10-15 Prometheus(普罗米修斯)介绍(普罗米修斯深度解析知乎)
- 2024-10-15 自动伸缩你的应用(自动伸缩装置怎么做?)
- 2024-10-15 十次方社交系统 第10章-容器管理与容器监控
- 2024-10-15 APO 集成生态exporter一键完成指标采集
- 2024-10-15 如何得到实时的Docker性能Metrics?
- 2024-10-15 详解docker部署prometheus+grafana监控系统体系,值得收藏
- 2024-10-15 docker 监控方案介绍(docker 网络监控)
- 2024-10-15 一起学习Kubernetes:通信、控制器、租约、cgroupv2、CRI和GC
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)