kubernetes: CPU 和内存单位解释、metric-server接口调用
目录
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
- 1 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资源对象
注意:目前(截止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接口调用相关推荐
- Kubernetes:HPA 详解-基于 CPU、内存和自定义指标自动扩缩容
目录 HPA 基本原理 Metrics Server 聚合 API 安装Metrics Server HPA 基于 CPU自动扩缩容 查看 HPA 资源的对象了解工作过程: HPA 基于 内存自动扩缩 ...
- kubernetes限制pod的cpu和内存
kubernetes限制pod的cpu和内存 1.在创建容器的配置文件中指定 spec:containers:- image: gcr.io/google_containers/serve_hostn ...
- 容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额
容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 创建一个Po ...
- Kubernetes 为 Namespace 配置CPU和内存配额
Kubernetes 为 Namespace 配置CPU和内存配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 创建一个Pod 5 尝试创建第二 ...
- k8s 监控 metric-server cpu 内存单位换算
计算方法:次方 func newSuffixer() suffixer {sh := &suffixHandler{}// 内存单位计算sh.binSuffixes.addSuffix(&qu ...
- sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)
原文:sql server 运维时CPU,内存,操作系统等信息查询(用sql语句) 我们只要用到数据库,一般会遇到数据库运维方面的事情,需要我们寻找原因,有很多是关乎处理器(CPU).内存(Memor ...
- 关于监控服务器指标、CPU、内存、警报的一些解决方案
文章目录 关于监控服务器指标.CPU.内存.警报的一些解决方案 `Prometheus` + `Grafana` 配置 `IRIS` / `Caché` 监控服务器 `Prometheus` 简介 特 ...
- MySQL优化系列3-Linux查看CPU、内存、磁盘、网络信息
备注:测试数据库版本为MySQL 8.0 文章目录 一.查看CPU信息 1.1 查看物理CPU个数 1.2 查看每个物理CPU中core的个数(即核数) 1.3 查看逻辑CPU的个数 1.4 查看CP ...
- CPU与内存的那些事
下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...
最新文章
- 有没有适合部署在局域网的团队协作平台?
- observeOn()与subscribeOn()的详解
- ansible基本操作
- Python:docx模块
- 在Windows系统中配置Google AddressSanitizer
- 计算机表示法是知识 表示法么,计算机三级考试关于IP地址知识点
- 人物志 | KDD Cup 2017双料冠军燕鹏
- elasticsearch集群选举源码解析
- java对mysql的简单操作——增删改查的总结
- glibc版本查看_[译] 写一个简单的内存分配器(替换glibc中的malloc函数)
- webAppbuilder微件使用教程2 常用微件介绍
- 2020电信最新套餐一览表_最新!2020年宁波中学排名一览表
- 军用设备环境试验方法湿热试验标准
- 新版闪讯破解无线wifi共享
- 基于python语言设计的词云定制器
- Java网络编程(BIO和NIO)
- [导入]陈冠希蛰伏35天后闪电复出 将与舒淇演爱情片
- Java编写杨辉三角
- python实现决策树 西瓜书_朴素贝叶斯python代码实现(西瓜书)
- Excel根据出生日期判断生肖,Leo老师来教你!
热门文章
- java service wrapper导致内存剧增直至崩溃
- 【安装】Ubuntu20.04下安装ROS的完整过程(内含已装好ROS的虚拟机、虚拟机创建过程、ROS安装过程及全过程录屏)
- css环形文本,css制作环形文本
- 量子化学--分子动力学
- SpringBoot系列教程JPA之指定id保存
- IDEA插件系列(9):MyBatisX插件——Mybatis插件
- 小米基于 Flink 的实时数仓建设实践
- linux系统如何开启网卡2,Linux系统的双网卡设置
- 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)
- matlab 函数 c++ 复写之randperm