云原生 | Kubernetes - 资源指标管道

news2025/3/15 17:01:45

目录

Metrics API

度量资源用量

CPU

内存

Metrics 服务器


对于 Kubernetes,Metrics API 提供了一组基本的指标,以支持自动伸缩和类似的用例。 该 API 提供有关节点和 Pod 的资源使用情况的信息, 包括 CPU 和内存的指标。如果将 Metrics API 部署到集群中, 那么 Kubernetes API 的客户端就可以查询这些信息,并且可以使用 Kubernetes 的访问控制机制来管理权限。

HorizontalPodAutoscaler (HPA) 和 VerticalPodAutoscaler (VPA) 使用 metrics API 中的数据调整工作负载副本和资源,以满足客户需求。也可以通过 kubectl top 命令来查看资源指标。

说明:

Metrics API 及其启用的指标管道仅提供最少的 CPU 和内存指标,以启用使用 HPA 和/或 VPA 的自动扩展。 如果你想提供更完整的指标集,你可以通过部署使用 Custom Metrics API 的第二个指标管道来作为简单的 Metrics API 的补充。

下图说明了资源指标管道的架构:

图中从右到左的架构组件包括以下内容:

  • cAdvisor: 用于收集、聚合和公开 Kubelet 中包含的容器指标的守护程序。
  • kubelet: 用于管理容器资源的节点代理。 可以使用 /metrics/resource  /stats kubelet API 端点访问资源指标。
  • Summary API: kubelet 提供的 API,用于发现和检索可通过 /stats 端点获得的每个节点的汇总统计信息。
  • metrics-server: 集群插件组件,用于收集和聚合从每个 kubelet 中提取的资源指标。 API 服务器提供 Metrics API 以供 HPA、VPA 和 kubectl top 命令使用。Metrics Server 是 Metrics API 的参考实现。
  • Metrics API: Kubernetes API 支持访问用于工作负载自动缩放的 CPU 和内存。 要在你的集群中进行这项工作,你需要一个提供 Metrics API 的 API 扩展服务器。
说明: cAdvisor 支持从 cgroups 读取指标,它适用于 Linux 上的典型容器运行时。 如果你使用基于其他资源隔离机制的容器运行时,例如虚拟化,那么该容器运行时必须支持 CRI 容器指标 以便 kubelet 可以使用指标。

Metrics API

特性状态: Kubernetes 1.8 [beta]

metrics-server 实现了 Metrics API。此 API 允许你访问集群中节点和 Pod 的 CPU 和内存使用情况。 它的主要作用是将资源使用指标提供给 K8s 自动缩放器组件。

下面是一个 minikube 节点的 Metrics API 请求示例,通过 jq 管道处理以便于阅读:

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes/minikube" | jq '.'

这是使用 curl 来执行的相同 API 调用:

curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/nodes/minikube

响应示例:

{
  "kind": "NodeMetrics",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "name": "minikube",
    "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/minikube",
    "creationTimestamp": "2022-01-27T18:48:43Z"
  },
  "timestamp": "2022-01-27T18:48:33Z",
  "window": "30s",
  "usage": {
    "cpu": "487558164n",
    "memory": "732212Ki"
  }
}

下面是一个 kube-system 命名空间中的 kube-scheduler-minikube Pod 的 Metrics API 请求示例, 通过 jq 管道处理以便于阅读:

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube" | jq '.'

这是使用 curl 来完成的相同 API 调用:

curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube

响应示例:

{
  "kind": "PodMetrics",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "name": "kube-scheduler-minikube",
    "namespace": "kube-system",
    "selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube",
    "creationTimestamp": "2022-01-27T19:25:00Z"
  },
  "timestamp": "2022-01-27T19:24:31Z",
  "window": "30s",
  "containers": [
    {
      "name": "kube-scheduler",
      "usage": {
        "cpu": "9559630n",
        "memory": "22244Ki"
      }
    }
  ]
}

Metrics API 在 k8s.io/metrics 代码库中定义。 你必须启用 API 聚合层并为 metrics.k8s.io API 注册一个 APIService。

说明:

你必须部署提供 Metrics API 服务的 metrics-server 或其他适配器才能访问它。


度量资源用量

CPU

CPU 报告为以 cpu 为单位测量的平均核心使用率。在 Kubernetes 中, 一个 cpu 相当于云提供商的 1 个 vCPU/Core,以及裸机 Intel 处理器上的 1 个超线程。

该值是通过对内核提供的累积 CPU 计数器(在 Linux 和 Windows 内核中)取一个速率得出的。 用于计算 CPU 的时间窗口显示在 Metrics API 的窗口字段下。

内存

内存报告为在收集度量标准的那一刻的工作集大小,以字节为单位。

在理想情况下,“工作集”是在内存压力下无法释放的正在使用的内存量。 然而,工作集的计算因主机操作系统而异,并且通常大量使用启发式算法来产生估计。

Kubernetes 模型中,容器工作集是由容器运行时计算的与相关容器关联的匿名内存。 工作集指标通常还包括一些缓存(文件支持)内存,因为主机操作系统不能总是回收页面。


Metrics 服务器

metrics-server 从 kubelet 中获取资源指标,并通过 Metrics API 在 Kubernetes API 服务器中公开它们,以供 HPA 和 VPA 使用。 你还可以使用 kubectl top 命令查看这些指标。

metrics-server 使用 Kubernetes API 来跟踪集群中的节点和 Pod。metrics-server 服务器通过 HTTP 查询每个节点以获取指标。 metrics-server 还构建了 Pod 元数据的内部视图,并维护 Pod 健康状况的缓存。 缓存的 Pod 健康信息可通过 metrics-server 提供的扩展 API 获得。

例如,对于 HPA 查询,metrics-server 需要确定哪些 Pod 满足 Deployment 中的标签选择器。

metrics-server 调用 kubelet API 从每个节点收集指标。根据它使用的度量服务器版本:

  • 版本 v0.6.0+ 中,使用指标资源端点 /metrics/resource
  • 旧版本中使用 Summary API 端点 /stats/summary

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【设计模式】适配器模式 (七)

文章目录5.2 适配器模式5.2.1 概述5.2.2 结构5.2.3 类适配器模式5.2.4 对象适配器模式5.2.5 应用场景5.2.6 JDK源码解析5.2 适配器模式 5.2.1 概述 如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此…

机器学习笔记之玻尔兹曼机(一)基本介绍

机器学习笔记之玻尔兹曼机——基本介绍引言回顾:玻尔兹曼机的模型表示模型参数的对数似然梯度关于模型参数W\mathcal WW的对数似然梯度关于模型参数L,J\mathcal L,\mathcal JL,J的对数似然梯度引言 在受限玻尔兹曼机——模型表示(Representation)一节中以玻尔兹曼机…

五环三萜类化合物环糊精包合物前体脂质体/呋喃硫胺/6已基环糊精纳米粒制备

小编在这里为大家分享的是五环三萜类化合物环糊精包合物前体脂质体/呋喃硫胺/6已基环糊精纳米粒,一起来看看吧! 五环三萜类化合物环糊精包合物前体脂质体制备方法: 通过环糊精将五环三萜类化合物包合提高亲水性,并以脂质体为载体进行包覆,通…

[Linux]线程概念_线程控制(线程与进程的区别与联系 | 线程创建 | 线程等待 | 线程终止 | 线程分离 | LWP)

文章目录线程概念进程和线程的关系线程的优点线程的缺点线程控制Linux线程和接口关系的认识线程创建线程ID及进程地址空间布局线程等待线程终止线程终止状态线程分离LWP和pthread_t线程概念 线程是在进程内部运行的一个执行分支(执行流),属于…

我会用12种编程语言,但是偏爱python,看完文章你就知道原因了

刚开始学编程,或者学习一门新的编程语言时,我们编写的第一个程序往往很简单,而且往往这个程序就是输出一个简单的文本。在阅读本文时,你可能心知肚明我指的是哪种最常见的文本。 没错,我说的就是 Hello world。 这段文…

当中医遇上AI,贝叶斯携手昇思打造AI舌诊联合方案

中医的困局 中医迄今已有数千年历史,是老祖宗留给我们最宝贵的财富之一。然而,随着近代医学技术的发展,与声势浩大的西医相比,中医逐渐失势。 近年来,人口老龄化导致慢性病发病率持续增高。国家层面出台《健康中国行…

生态类型 or 生境类型?16S全长测序判断河流中细菌群落构建机理

文献标题: Distinct composition and assembly processes of bacterial communities in a river from the Arid area: Ecotypes or Habitat Types? 研究背景 细菌群落在河流生态系统中起着重要的作用,如元素循环和有机物的降解等。对河流细菌群落的扰…

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

还在用明文存储密码吗?快来了解一下加密吧

目录 一. 数据库为什么不能明文存储密码 二. MD5到底是什么? 2.1 MD5概述 2.2 MD5为什么不是加密算法? 2.3 MD5主要特点MD5 2.4 MD5的性质 2.5 为什么用MD5存储密码不好 三. 给密码加盐再落库,增加破解成本 四. BCrypt算法加密解密…

零入门容器云网络-8:网络虚拟设备之tun设备介绍

已发表的技术专栏(订阅即可观看所有专栏) 0  grpc-go、protobuf、multus-cni 技术专栏 总入口 1  grpc-go 源码剖析与实战  文章目录 2  Protobuf介绍与实战 图文专栏  文章目录 3  multus-cni   文章目录(k8s多网络实现方案) 4  gr…

SpringCloud(8)— 使用ElasticSearch(RestClient)

SpringCloud(8)— 使用ElasticSearch(RestClient) 一 认识RestClient ES 官方提供了各种语言的客户端用来操作ES,这些客户端的本质就是组创DSL语句,通过 Http 请求发送给ES 官方文档地址:Elasticsearch Clients | E…

运维基础(上部)

运维基础【(上部)】 因为笔记所记内容太多,所以我分成了上下两部分来分享给大家查看学习!同时我会持续更新博客发布更加优质的文章,希望大家多多支持与关注!感谢! 一、运维概述 1、运维岗位的收…

[附源码]计算机毕业设计Python港口集团仓库管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等…

GitLab Runner的使用

一、初次使用GitLab Runner 特别说明:前面已经将本地项目成功推送到了GitLab中,并且已经注册了一个GitLab Runner,接下来就是使用GitLab Runner。 触发GitLab Runner以完成GitLab的CI(持续集成)/CD(持续部署),需满足下述两个条件: 仓库根目录下面存在有.gitlab-ci.yml文…

[ Linux ] 互斥量实现原理,线程安全

上篇文章我们对抢票系统做了加锁处理,对互斥量tickets进行加锁。而本篇博文来谈谈互斥量实现的原理以及相关问题。 目录 1.上篇遗留问题 我们在临界资源对应的临界区中加锁了,就不是多行代码了吗?如果还是多行代码,难道不会被切…

[附源码]计算机毕业设计Python公益组织登记与查询系统论文(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【AI with ML】第 13 章 :在 Android 应用程序中使用 TensorFlow Lite

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

vue的虚拟DOM和diff算法

虚拟DOM和diff算法密不可分, 虚拟dom,它本身就是一个 JavaScript 对象,为解决DOM操作非常耗时,把DOM转换为虚拟DOM,DOM操作转换为js计算,js执行速度较快。 diff算法在vue中被优化为O(n)的时间复杂度&#x…

手机损坏的数据导出方法

主板损坏的症状 手机主板损坏的症状表现一般为系统启动失败、屏幕无显示、启动黑屏死机、无法开机、没有声音、无法打电话、没网络等等。 资料的重要性 手机坏了,怎么把手机里面重要的资料导出来?今天小编就来跟大家说说手机导资料这个事。 手机坏了,具体要看手机是哪里…

java计算机毕业设计ssm基于JavaWeb的公务员招考信息发布平台

项目介绍 随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具,各种管理系统层出不穷。公务员是各国负责统筹管理经济社会秩序和国家公共资源,维护国家法律规定,贯彻执行相关义务的公职人员。每年报考公务员的人数逐渐增加,特为此…