计算机系统应用教程网站

网站首页 > 技术文章 正文

《蹲坑学K8S》之21-1:Metrics-Server监控

btikc 2024-10-10 04:51:18 技术文章 11 ℃ 0 评论

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

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

一、Metrics API

介绍Metrics-Server之前,必须要提一下Metrics API的概念

Metrics API相比于之前的监控采集方式(hepaster)是一种新的思路,官方希望核心指标的监控应该是稳定的,版本可控的,且可以直接被用户访问(例如通过使用 kubectl top 命令),或由集群中的控制器使用(如HPA),和其他的Kubernetes APIs一样。

官方废弃heapster项目,就是为了将核心资源监控作为一等公民对待,即像pod、service那样直接通过api-server或者client直接访问,不再是安装一个hepater来汇聚且由heapster单独管理。

Metrics server出现后,新的Kubernetes监控架构将变成上图的样子

核心流程(黑色部分):这是 Kubernetes正常工作所需要的核心度量,从 Kubelet、cAdvisor 等获取度量数据,再由metrics-server提供给Dashboard、HPA控制器等使用。

监控流程(蓝色部分):基于核心度量构建的监控流程,比如Prometheus可以从metrics-server获取核心度量,从其他数据源(如Node Exporter等)获取非核心度量,再基于它们构建监控告警系统。

二、安装部署metrics-server

1、克隆配置文件:

[root@k8s-master ~]# git clone https://github.com/kubernetes-incubator/metrics-server

2、拉去镜像

[root@k8s-node-1 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
[root@k8s-node-1 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6
[root@k8s-node-1 ~]# docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6

3、修改配置文件

[root@k8s-master ~]# vim metrics/metrics-server-deployment.yaml
修改:
containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.6
        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        imagePullPolicy: IfNotPresent
        args:
          - --cert-dir=/tmp
          - --secure-port=4443

[root@k8s-master ~]# kubectl apply -f metrics/
[root@k8s-master ~]# kubectl get pods --namespace=kube-system  -o wide

三、测试

1、使用Kubectl测试

(1)查看节点监控数据

[root@k8s-master ~]# kubectl top nodes

(2)查看Pod监控数据

[root@k8s-master ~]# kubectl top pods

2、使用Proxy代理接口测试

[root@k8s-master ~]# kubectl proxy --port=8081 &
[root@k8s-master ~]# curl http://localhost:8081/apis/metrics.k8s.io/v1beta1/nodes
[root@k8s-master ~]# curl http://localhost:8081/apis/metrics.k8s.io/v1beta1/pods



Tags:

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

欢迎 发表评论:

最近发表
标签列表