• Metrics-Server总结


    介绍

    • metrics-server 是 Kubernetes 监控体系中的核心组件之一,它负责从 kubelet 收集资源指标,然后对这些指标监控数据进行聚合(依赖 kube-aggregator),并在 Kubernetes Apiserver 中通过 Metrics API ( /apis/metrics.k8s.io/)公开暴露它们,但是 metrics-server 只存储最新的指标数据(CPU/Memory),
    • 你的 kube-apiserver 要能访问到 metrics-server;
    • 需要 kube-apiserver 启用聚合层;
    • 组件要有认证配置并且绑定到 metrics-server;
    • Pod / Node 指标需要由 Summary API 通过 kubelet 公开。

    aggregated apiserver

    对apiserver的访问实际上就是rest调用,后端的URI就是哪一个api的哪一个版本的哪一个对象。然后就可以对这些URI注册不同的handler,转发到不同的api。

    把多个apiserver聚合成一个,对用户来说只是访问了一个apiserver地址,后面可能有多个apiserver,服务于不同的api。原生的apiserver,服务于原生对象如node,pod等。

    file

    查看apiservice

    k get apiservice
    
    • 1

    file

    local代表的是原生的apiserver。

    k get apiservice v1.node.k8s.io -o yaml
    
    • 1

    file

    安装

    1. 这里使用helm安装,也可以使用其他方式。
    helm search repo metrics-server
    
    • 1

    file

    1. 下载chart
    helm pull bitnami/metrics-server
    tar xvf metrics-server-5.11.7.tgz
    cd metrics-server
    
    • 1
    • 2
    • 3
    1. 修改values.yaml
    apiService:
    	create: true
    extraArgs:
    	kubelet-insecure-tls: true
     	kubelet-preferred-address-types: InternalIP,ExternalIP,Hostname
    	kubelet-use-node-status-port: true
    readinessProbe:
    	initialDelaySeconds: 20
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 安装
    helm install metrics-server . -n kube-system
    
    • 1

    file

    1. 查看pod,svc
    ks get po,svc | grep metrics-server
    
    • 1

    file

    1. 查看apiservice
    k get apiservice | grep metrics-server
    k get apiservice v1beta1.metrics.k8s.io -o yaml
    
    • 1
    • 2

    file
    这个就代表任何访问v1beta1.metrics.k8s.io api下的对象都转发给metrics-server来处理。

    1. 查看集群负载
    k top po
    k top node
    
    • 1
    • 2

    file

    1. 查看k top明细
    k top po -v 9
    
    • 1

    top命令最终还是转到了一个get到metrics.k8s.io的请求。
    file

    1. 查看node
    kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
    
    • 1

    file

    用途

    metrics-server更多的是用来获取集群当前指标,并根据设置好的值,来横向扩容(hpa)或者纵向扩容(vpa)。
    file

    • k top去apiserver获取指标
    • apiserver转发到metrics-server
    • metrics-server到kubelet获取指标返回给apiserver

    将指标数据转换成 metrics.k8s.io 的 api 调用返回值

    k get --raw "/api/v1/nodes/node1/proxy/metrics/resource"
    
    • 1

    返回的数值包括节点,容器,pod。

    file

  • 相关阅读:
    使用C语言实现双向链表(带头结点)
    typescript+webpack构建一个js库
    动态规划问题(八)
    蓝鲸研运体系在腾讯内的应用实践
    【Flutter小记3】Android打开前置或广角摄像头的同时打开闪光灯方案
    端侧GPU基于opencl实现reduce算子
    学习Blender必备的12款动画插件,来了解一下
    SpringCloud复习:(2)@LoadBalanced注解的工作原理
    ArcGIS软件制作双变量等值区域地图(Bivariate Choropleth Maps)
    QGraphicsView制作绘制图元工具资料整理(鼠标、平移、缩放)
  • 原文地址:https://blog.csdn.net/weixin_43616190/article/details/126433497