编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

容器化时代的默认的监控方式(什么是容器化运行)

wxchong 2024-10-15 17:20:21 开源技术 11 ℃ 0 评论

前言

在学习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更多功能的体验,后面会持续更新。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表