目录

Pod 和 容器的资源请求和限制

CPU 的含义

内存的含义

kubernetes: 全面的CPU 和内存单位解释

CPU单位:n

通过kubernetes-client/java类库获取metric资源对象

metric-server简介

The Metrics API

Pod示例


Pod 和 容器的资源请求和限制

当您定义 Pod 的时候可以选择为每个容器指定需要的 CPU 和内存(RAM)大小。

Pod 中的每个容器都可以指定以下的一个或者多个值:

  • spec.containers[].resources.limits.cpu
  • spec.containers[].resources.limits.memory
  • spec.containers[].resources.requests.cpu
  • spec.containers[].resources.requests.memory

尽管只能在个别容器上指定请求和限制,但是我们可以方便地计算出 Pod 资源请求和限制。特定资源类型的Pod 资源请求/限制是 Pod 中每个容器的该类型的资源请求/限制的总和。

CPU 的含义

CPU 资源的限制和请求以 cpu 为单位。

Kubernetes 中的一个 cpu 等于:

  • 1 AWS vCPU
  • 1 GCP Core
  • 1 Azure vCore
  • Hyperthread 在带有超线程的裸机 Intel 处理器上

允许浮点数请求。具有 spec.containers[].resources.requests.cpu 为 0.5 的容器保证了一半 CPU 要求 1 CPU的一半。

表达式 0.1 等价于表达式 100m,可以看作 “100 millicpu”。

内存的含义

内存的限制和请求以字节为单位。

您可以使用以下后缀之一作为平均整数或定点整数表示内存:E,P,T,G,M,K。

您还可以使用两个字母的等效的幂数:Ei,Pi,Ti ,Gi,Mi,Ki。例如,以下代表大致相同的值:

128974848, 129e6, 129M, 123Mi

i表示(1Mi=1024x1024), M表示(1M=1000x1000)(其它单位类推, 如Ki/K Gi/G

kubernetes: 全面的CPU 和内存单位解释

计算法则:次方

func newSuffixer() suffixer {sh := &suffixHandler{}// IMPORTANT: if you change this section you must change fastLookupsh.binSuffixes.addSuffix("Ki", bePair{2, 10})sh.binSuffixes.addSuffix("Mi", bePair{2, 20})sh.binSuffixes.addSuffix("Gi", bePair{2, 30})sh.binSuffixes.addSuffix("Ti", bePair{2, 40})sh.binSuffixes.addSuffix("Pi", bePair{2, 50})sh.binSuffixes.addSuffix("Ei", bePair{2, 60})// Don't emit an error when trying to produce// a suffix for 2^0.sh.decSuffixes.addSuffix("", bePair{2, 0})sh.decSuffixes.addSuffix("n", bePair{10, -9})sh.decSuffixes.addSuffix("u", bePair{10, -6})sh.decSuffixes.addSuffix("m", bePair{10, -3})sh.decSuffixes.addSuffix("", bePair{10, 0})sh.decSuffixes.addSuffix("k", bePair{10, 3})sh.decSuffixes.addSuffix("M", bePair{10, 6})sh.decSuffixes.addSuffix("G", bePair{10, 9})sh.decSuffixes.addSuffix("T", bePair{10, 12})sh.decSuffixes.addSuffix("P", bePair{10, 15})sh.decSuffixes.addSuffix("E", bePair{10, 18})return fastLookup{sh}
}

CPU单位:n

metrics-server中,获取某个节点的使用情况,cpu的单位有时是n (1m = 1000*1000n ):

Http请求:https://apiserver地址:6443/apis/metrics.k8s.io/v1beta1/nodes/节点名称

kubelet命令:kubectl  get nodes.metrics.k8s.io 节点名称 -o yaml

{"kind": "NodeMetrics","apiVersion": "metrics.k8s.io/v1beta1","metadata": {"name": "ac-private-2","selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/ac-private-2","creationTimestamp": "2018-12-06T02:26:04Z"},"timestamp": "2018-12-06T02:25:46Z","window": "30s","usage": {"cpu": "22436949n","memory": "3846476Ki"}
}

通过kubernetes-client/java类库获取metric资源对象

通过kubernetes-client/java类库获取metric资源对象

注意:目前(截止2020年3月份), kubernetes-client/java类库并不支持直接调用metrics的api,所以只能通过CRD资源方式

标题

更多kubernetes-client/java类库使用,

参考《使用 Java 操作 Kubernetes API》https://blog.csdn.net/fly910905/article/details/101345091

metric-server简介

Metrics Server is a cluster-wide aggregator of resource usage data. Resource metrics are used by components like kubectl top and the Horizontal Pod Autoscaler to scale workloads. To autoscale based upon a custom metric, you need to use the Prometheus Adapter Metric-server是一个集群级别的资源指标收集器,用于收集资源指标数据

  • 提供基础资源如CPU、内存监控接口查询;
  • 接口通过 Kubernetes aggregator注册到kube-apiserver中;
  • 对外通过Metric API暴露给外部访问;
  • 自定义指标使用需要借助Prometheus实现。

The Metrics API

  • /node 获取所有节点的指标,指标名称为NodeMetrics
  • /node/<node_name> 特定节点指标
  • /namespaces/{namespace}/pods 获取命名空间下的所有pod指标
  • /namespaces/{namespace}/pods/{pod} 特定pod的指标,指标名称为PodMetrics

未来将能够支持指标聚合,如max最大值,min最小值,95th峰值,以及自定义时间窗口,如1h,1d,1w等。

Pod示例

以下 Pod 有两个容器。

每个容器的请求为 0.25 cpu 和 64MiB(226 字节)内存,每个容器的限制为 0.5 cpu 和 128MiB 内存。

您可以说该 Pod 请求 0.5 cpu 和 128 MiB 的内存,限制为 1 cpu 和 256MiB 的内存。

apiVersion: v1
kind: Pod
metadata:name: frontend
spec:containers:- name: dbimage: mysqlenv:- name: MYSQL_ROOT_PASSWORDvalue: "password"resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"- name: wpimage: wordpressresources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"

参考链接:

https://kubernetes.io/zh/docs/concepts/configuration/manage-compute-resources-container/

https://github.com/kubernetes/apimachinery/blob/564e0900f0fdabbdc81495b88ce0ca03a62f0af3/pkg/api/resource/suffix.go#L88

kubernetes: CPU 和内存单位解释、metric-server接口调用相关推荐

  1. Kubernetes:HPA 详解-基于 CPU、内存和自定义指标自动扩缩容

    目录 HPA 基本原理 Metrics Server 聚合 API 安装Metrics Server HPA 基于 CPU自动扩缩容 查看 HPA 资源的对象了解工作过程: HPA 基于 内存自动扩缩 ...

  2. kubernetes限制pod的cpu和内存

    kubernetes限制pod的cpu和内存 1.在创建容器的配置文件中指定 spec:containers:- image: gcr.io/google_containers/serve_hostn ...

  3. 容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额

    容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 创建一个Po ...

  4. Kubernetes 为 Namespace 配置CPU和内存配额

    Kubernetes 为 Namespace 配置CPU和内存配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 创建一个Pod 5 尝试创建第二 ...

  5. k8s 监控 metric-server cpu 内存单位换算

    计算方法:次方 func newSuffixer() suffixer {sh := &suffixHandler{}// 内存单位计算sh.binSuffixes.addSuffix(&qu ...

  6. sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)

    原文:sql server 运维时CPU,内存,操作系统等信息查询(用sql语句) 我们只要用到数据库,一般会遇到数据库运维方面的事情,需要我们寻找原因,有很多是关乎处理器(CPU).内存(Memor ...

  7. 关于监控服务器指标、CPU、内存、警报的一些解决方案

    文章目录 关于监控服务器指标.CPU.内存.警报的一些解决方案 `Prometheus` + `Grafana` 配置 `IRIS` / `Caché` 监控服务器 `Prometheus` 简介 特 ...

  8. MySQL优化系列3-Linux查看CPU、内存、磁盘、网络信息

    备注:测试数据库版本为MySQL 8.0 文章目录 一.查看CPU信息 1.1 查看物理CPU个数 1.2 查看每个物理CPU中core的个数(即核数) 1.3 查看逻辑CPU的个数 1.4 查看CP ...

  9. CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

最新文章

  1. 有没有适合部署在局域网的团队协作平台?
  2. observeOn()与subscribeOn()的详解
  3. ansible基本操作
  4. Python:docx模块
  5. 在Windows系统中配置Google AddressSanitizer
  6. 计算机表示法是知识 表示法么,计算机三级考试关于IP地址知识点
  7. 人物志 | KDD Cup 2017双料冠军燕鹏
  8. elasticsearch集群选举源码解析
  9. java对mysql的简单操作——增删改查的总结
  10. glibc版本查看_[译] 写一个简单的内存分配器(替换glibc中的malloc函数)
  11. webAppbuilder微件使用教程2 常用微件介绍
  12. 2020电信最新套餐一览表_最新!2020年宁波中学排名一览表
  13. 军用设备环境试验方法湿热试验标准
  14. 新版闪讯破解无线wifi共享
  15. 基于python语言设计的词云定制器
  16. Java网络编程(BIO和NIO)
  17. [导入]陈冠希蛰伏35天后闪电复出 将与舒淇演爱情片
  18. Java编写杨辉三角
  19. python实现决策树 西瓜书_朴素贝叶斯python代码实现(西瓜书)
  20. Excel根据出生日期判断生肖,Leo老师来教你!

热门文章

  1. java service wrapper导致内存剧增直至崩溃
  2. 【安装】Ubuntu20.04下安装ROS的完整过程(内含已装好ROS的虚拟机、虚拟机创建过程、ROS安装过程及全过程录屏)
  3. css环形文本,css制作环形文本
  4. 量子化学--分子动力学
  5. SpringBoot系列教程JPA之指定id保存
  6. IDEA插件系列(9):MyBatisX插件——Mybatis插件
  7. 小米基于 Flink 的实时数仓建设实践
  8. linux系统如何开启网卡2,Linux系统的双网卡设置
  9. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)
  10. matlab 函数 c++ 复写之randperm