千家信息网

Kubernetes Metrics API(Metrics Server)

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,监控资源指标管道 Metrics API(Metrics Server)资源指标管道:从 Kubernetes 1.8开始,资源使用指标,例如容器 CPU 和内存使用率,可通过 Metrics API
千家信息网最后更新 2026年11月01日Kubernetes Metrics API(Metrics Server)

监控资源指标管道 Metrics API(Metrics Server)

  • 资源指标管道:
    从 Kubernetes 1.8开始,资源使用指标,例如容器 CPU 和内存使用率,可通过 Metrics API 在 Kubernetes 中获得。这些指标可以直接被用户访问,比如使用kubectl top命令行,或者这些指标由集群中的控制器使用,例如,Horizontal Pod Autoscaler,使用这些指标来做决策;
  • Metrics API:
    通过 Metrics API,您可以获得指定节点或 pod 当前使用的资源量。此 API 不存储指标值,因此想要获取某个指定节点10分钟前的资源使用量是不可能的;
  • Metrics API 仓库:
    API源码GitHub仓库地址:
  • Metrics Server:
    Metrics Server是一种API Server。其提供了核心的Metrics API,通过在主 API server 中注册的 Metrics Server Kubernetes 聚合器来采集指标信息,就像k8s组件kube-apiserver提供了很多API群组一样,但它不是k8s组成部分,而是运行在k8s之上的单个Pod;
    为了让用户无缝的使用Metrics Server当中的API,还需要把这类自定义的API通过聚合器聚合到核心API组里,然后可以把此API当作是核心API的一部分并且通过kubectl api-versions可直接查看;
    Metrics Server 收集指标数据的方式是从各节点上kubelet提供的Summary API 即10250端口收集数据,收集Node和Pod核心资源指标数据,主要是内存和cpu方面的使用情况,并将收集的信息存储在内存中;
  • 您需要部署它,否则在集群中将不可用
    Metrics API 需要在集群中部署 Metrics Server。否则它将不可用;

在Kubernetes集群中部署 Metrics API(Metrics Server)

  • k8s新一代架构
    核心指标流水线:kubelet、metrics-server、api-server提供的api组成,统计cpu累计使用率、内存实时使用率、Pod资源占用率及容器的磁盘占用率;
    监控流水线:用于从系统收集各种指标数据并提供终端用户、存储系统及HPA,它们包含核心指标及许多非核心指标。非核心指标本身不能被k8s所解析;
  • 部署手册参考
    我部署metrics-server参考的官方站点
  • 从官方站点下载部署metrics server所需的yaml文件
    使用for循环下载
[root@node1 metrics]# lltotal 24-rw-r--r-- 1 root root  398 Feb 28 03:30 auth-delegator.yaml-rw-r--r-- 1 root root  419 Feb 28 03:30 auth-reader.yaml-rw-r--r-- 1 root root  388 Feb 28 03:30 metrics-apiservice.yaml-rw-r--r-- 1 root root 3252 Feb 28 03:30 metrics-server-deployment.yaml-rw-r--r-- 1 root root  336 Feb 28 03:30 metrics-server-service.yaml-rw-r--r-- 1 root root  795 Feb 28 03:30 resource-reader.yaml[root@node1 metrics]# 
  • 修改metrics-server-deployment.yaml文件
    修改容器当中的自定义变量资源限制,不然无法running;
command: //此处修改    - /metrics-server    - --metric-resolution=30s    # These are needed for GKE, which doesn't support secure communication yet.    # Remove these lines for non-GKE clusters, and when GKE supports token-based auth.    - --kubelet-port=10250    #- --deprecated-kubelet-completely-insecure=true    - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIPcommand: //此处修改    - /pod_nanny    - --config-dir=/etc/config    - --cpu=5m    - --extra-cpu=0.5m    - --memory=80Mi    - --extra-memory=8Mi    - --threshold=5    - --deployment=metrics-server-v0.3.6    - --container=metrics-server    - --poll-period=300000    - --estimator=exponential    # Specifies the smallest cluster (defined in number of nodes)    # resources will be scaled to.    #- --minClusterSize={{ metrics_server_min_cluster_size }}
  • 修改resource-reader.yaml文件
    添加nodes/stats
rules:- apiGroups:  - ""  resources:  - pods  - nodes  - namespaces  - nodes/stats
  • 提前下载镜像文件,在各个node节点上
    参考脚本
[root@node2 ~]# cat pull-metrics.sh #!/bin/bash#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.7docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.7 k8s.gcr.io/addon-resizer:1.8.7docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.7[root@node2 ~]# 
  • Metrics Server 应用构建
    不可重复构建
[root@node1 metrics]# kubectl apply -f ./clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator createdrolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader createdapiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io createdserviceaccount/metrics-server createdconfigmap/metrics-server-config createddeployment.apps/metrics-server-v0.3.6 createdservice/metrics-server createdclusterrole.rbac.authorization.k8s.io/system:metrics-server createdclusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created[root@node1 metrics]# [root@node1 ~]# kubectl get pods -n kube-systemNAME                                                         READY   STATUS    RESTARTS   AGEmetrics-server-v0.3.6-cf56dfd4-mj7p2        2/2        Running           0            22s
  • 测试等待结果
    有的时候需等待一会,才能刷出数据来
[root@node1 ~]# kubectl top nodesNAME    CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   node1   137m         6%     1043Mi          69%       node2   21m          2%     333Mi           20%       node3   23m          2%     343Mi           28% 
  • 通过接口访问节点资源信息路径

查看node资源指标

[root@node1 metrics]# kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq  | less

查看pods资源指标

[root@node1 metrics]# kubectl get --raw "/apis/metrics.k8s.io/v1beta1/pods" | jq  | less

其它方式在Kubernetes 上部署Metrics Server的方法

此方法要比以上部署要容易许多,可参考之

github kubernetes-sigs

指标 资源 核心 数据 节点 内存 文件 集群 参考 使用率 信息 容器 用户 存储 仓库 官方 官方站点 方式 流水 流水线 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技名片 南京欣网互联网络科技有限公司 互联网科技公司简介 互联网电商科技 盈实互联网科技 期待互联网科技 互联网科技论坛 互联网金融监管科技 湖南洣水互联网科技有限公司扣款 隆华科技工业互联网 互联网系的金融科技公司 科技与互联网哪个更好 来此购互联网科技有限公司 彤创互联网科技有限公司 互联网科技人工智能实验室 山东子淼互联网科技有限公司 云南省自由互联网科技有限公司 福州德业互联网科技 承德科技产业互联网平台 安徽九吞吴互联网科技有限公司 科技互联网公司装修 鑫亿盛互联网科技 善班互联网科技有限公司 四川狮子座互联网科技 湖南诚度互联网科技有限公司 佳云科技和互联网广告 智腾互联网科技有限公司 互联网金融运营模式中的金融科技 长沙渺峰互联网科技有限公司 互联网科技和医药行业
0