配置Pods和containers--为Containers和Pods分配CPU资源
指定CPU请求和CPU限制
要为容器指定CPU请求,在容器资源清单中使用resources:requests字段。要指定CPU限制,使用resources:limits。
cpu-request-limit.yaml
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
namespace: cpu-example
spec:
containers:
- name: cpu-demo-ctr
image: vish/stress
resources:
limits:
cpu: ""
requests:
cpu: "0.5"
args:
- -cpus
- ""
配置文件的args部分在容器启动时为其提供参数。-cpus“2”参数告诉容器尝试使用2个cpu。
创建Pod:
kubectl apply -f cpu-request-limit.yaml --namespace=cpu-example
确认POD正在运行:
kubectl get pod cpu-demo --namespace=cpu-example
查看有关POD的详细信息:
kubectl get pod cpu-demo --output=yaml --namespace=cpu-example
输出显示Pod中的一个容器具有500 milliCPU的CPU请求和1 CPU的CPU限制。
resources:
limits:
cpu: ""
requests:
cpu: 500m
使用kubectl top获取Pod的度量:
kubectl top pod cpu-demo --namespace=cpu-example
这个示例输出显示pod正在使用974milliCPU,这只是比Pod配置中指定的1CPU的限制少了一点。
NAME CPU(cores) MEMORY(bytes)
cpu-demo 974m <something>
回想一下,通过设置-cpu“2”,将容器配置为尝试使用2个CPU,但容器只允许使用大约1个CPU。容器的CPU使用正在被限制,因为容器正在尝试使用超过其限制的CPU资源。
注意:CPU使用低于1.0的另一个可能的解释是节点可能没有足够的可用CPU资源。回想一下,这个练习的先决条件要求每个节点至少有一个cpu。如果容器在只有1个CPU的节点上运行,则无论为容器指定的CPU限制如何,容器都不能使用超过1个CPU。
CPU单元
CPU资源是以CPU单位度量的。在kubernetes中,一个CPU相当于:
- 1 AWS VCPU
- 1 GCP核心
- 1个azure vcore
- 1个带超线程的裸机Intel处理器上的超线程
允许使用小数。一个请求0.5CPU的容器的cpu保证是请求1CPU的容器的一半。你可以用后缀m来表示milli。例如100M CPU、100毫CPU和0.1 CPU都是相同的。不允许精度小于1m。
CPU总是作为绝对数量请求,而不是作为相对数量;0.1是单核、双核或48核计算机上相同数量的CPU。
删除Pod
kubectl delete pod cpu-demo --namespace=cpu-example
指定对节点来说太大的CPU请求
CPU请求和限制与容器相关,但将Pod视为具有CPU请求和限制是有用的。Pod的CPU请求是Pod中所有容器的CPU请求的总和。同样,Pod的CPU限制是Pod中所有容器的CPU限制之和。
Pod调度基于请求。只有当节点有足够的CPU资源来满足Pod CPU请求时,Pod才会被安排在节点上运行。
如下将创建一个Pod,它的CPU请求太大,超过集群中任何节点的容量。这是一个有一个容器的Pod的配置文件。容器请求100个CPU,这可能会超过集群中任何节点的容量。
cpu-request-limit-2.yaml
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo-
namespace: cpu-example
spec:
containers:
- name: cpu-demo-ctr-
image: vish/stress
resources:
limits:
cpu: ""
requests:
cpu: ""
args:
- -cpus
- ""
创建Pod:
kubectl apply -f cpu-request-limit-.yaml --namespace=cpu-example
查看POD状态:
kubectl get pod cpu-demo- --namespace=cpu-example
输出显示POD状态为挂起。也就是说,pod没有被安排在任何节点上运行,它将无限期地保持在挂起状态:
kubectl get pod cpu-demo- --namespace=cpu-example
NAME READY STATUS RESTARTS AGE
cpu-demo- / Pending 7m
查看有关POD的详细信息,包括事件:
kubectl describe pod cpu-demo- --namespace=cpu-example
输出显示,由于节点上的CPU资源不足,无法计划容器:
Events:
Reason Message
------ -------
FailedScheduling No nodes are available that match all of the following predicates:: Insufficient cpu ().
删除Pod:
kubectl delete pod cpu-demo- --namespace=cpu-example
如果未指定CPU限制
如果未指定容器的CPU限制,则以下情况之一适用:
- 容器对它可以使用的CPU资源没有上限。容器可以使用其运行所在节点上可用的所有CPU资源。
- 容器正在具有默认CPU限制的命名空间中运行,容器将自动分配默认限制。群集管理员可以使用LimitRange指定CPU限制的默认值。
CPU请求和限制的动机
通过配置集群中运行的容器的CPU请求和限制,可以有效地利用集群节点上可用的CPU资源。通过保持Pod CPU请求低,可以给Pod很好的被调度的机会。通过CPU限制大于CPU请求,您可以完成两件事:
- pod可以有突发的活动,在那里它可以利用cpu资源碰巧是可用的。
- pod在突发期间可以使用的cpu资源量被限制在某个合理的数量。
配置Pods和containers--为Containers和Pods分配CPU资源的更多相关文章
- 配置Pods和containers--为Containers和Pods分配内存资源
指定内存请求和内存限制 要为容器指定内存请求,在容器的资源清单中使用resources:requests字段.要指定内存限制,使用resources:limits. memory-request-li ...
- Asp.Net配置不允许通过url方式访问目录下的资源
Asp.Net网站发布后,有部分文件为了安全性,是不能直接通过url访问获取 通常有2种做法: 1.将文件目录建立在 App_code 或者App_Data 等默认的隐藏目录下 2.将文件的目录添加到 ...
- 配置AD RMS及SharePoint 2013 IRM问题解决及相关资源
最近配置AD RMS及SharePoint 2013 IRM遇到几个问题: 1. RMS配置好后,client端连不上, 一直要求输入用户名和密码. 后来换了台不是SP的机器,并用内部DB,搞定. ...
- MySQL5.7.19 免安装配置 + Navicat for MySQL安装和破解(附全部资源)
近段时间因为工作原因安装了好多次本地MySQL,安装过程也是时有曲折,索性记录一下. 环境: Win10 家庭版 MySQL5.7.19 (链接:https://pan.baidu.com/s/1 ...
- IDEA maven 配置,运行比较慢,加截本地仓库资源数据
在 Runner 配置了参数: -DarchetypeCatalog=internal
- 低配置电脑播放 flash 视频时 占 cpu 资源过高的解决方法
安装低版本的 flash player 版本, 经调试能满足播放的最低版本是 Flash Player 10.3.183.90 然后 firefox 3.6.28 + Adblock Plus 2.0 ...
- 【适合核显电脑的环境配置】Tensorflow教程-Windows 10下安装tensorflow CPU with Anaconda
安装TensorFlow 1.5.0 CPU版本 :仅支持CPU的TensorFlow. 如果您的系统没有NVIDIA GPU,则必须安装此版本. 1.首先下载和安装Anaconda TensorFl ...
- 第三章 Hyper-V 2012 R2配置选项
原书中的第二章 是介绍了下hyper-v的管理器和检查点的使用,导入导出虚拟机,所以我跳过了不高兴写,很简单.直接进入第三部分,介绍虚拟机的三个重要组成部分:CPU,内存,硬盘的配置选项. Hyper ...
- Spark 性能相关参数配置详解-任务调度篇
随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇 ...
随机推荐
- 我的GitHub:https://github.com/javaFesh?tab=repositories
https://github.com/javaFesh?tab=repositories
- ShareSDK For Unity集成
Mob ShareSDK Android - V2.7.10 iOS - V3.5.0 Mob下载:https://github.com/MobClub/New-Unity-For-ShareSDK ...
- PHP中的匿名类
许久不练,要写起来. <?php //匿名类, 同样可以使用继承,接口,特性 //内部匿名类使用外部类的方法和属性,通过继承或构造方法传参 $object = new class { publi ...
- luogu2900:Land Acquisition(斜率优化)
题意:有N块地,每块地给出的宽和高,然后可以分批买,每次买的代价是所选择的地种最宽*最高. 问怎么买,使得代价和最小. 思路:显然,先去掉被包括的情况,即如果一个地的宽和高斗比另外一个小,那么久可以删 ...
- wraps装饰器的作用
装饰器的本质是一个闭包函数,作用在于不改变原函数功能和调用方法的基础上给它添加额外的功能.装饰器在装饰一个函数时,原函数就成了一个新的函数,也就是说其属性会发生变化,所以为了不改变原函数的属性,我们会 ...
- 20-2 树莓派搭建服务器 Tornado Web服务器
Drive.google.com/drive/folders/1ahbeoEHkjxoo4NV1wReOmpoRWbl448z- 1.Tornado简介 Tornado一款使用 Python 编写的, ...
- vue基于iview树状表格,封装完善
先安装iview后在使用 完善按钮不显示问题 ,当children过多时,点击不动问题等 封装 <template> <div :style="{width:tableWi ...
- 关于单片机的RAM
一块RAM 分为了 堆 和 栈 名词而已,知道就可以了, 各种内存溢出问题: 全局数组访问越界 出现的问题:直接重启,或者死机 解决办法 : 额,写好自己的程序吧!!!!!!! 函数的局部变量过 ...
- SDOI2019快速查询
链接 vijos 思路 虽然询问1e7,但他询问很有意思,所以最多修改1e5个. 先把他们修改的点缩小到1e5之内并没有什么影响. 然后维护mul和add.不修改很好弄,修改的点可以弄点式子加加减减弄 ...
- 洛谷 P1462 通往奥格瑞玛的道路 题解
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...