配置Pods和containers--为Containers和Pods分配CPU资源

指定CPU请求和CPU限制

要为容器指定CPU请求,在容器资源清单中使用resources:requests字段。要指定CPU限制,使用resources:limits。

cpu-request-limit.yaml

 1 apiVersion: v1
 2 kind: Pod
 3 metadata:
 4   name: cpu-demo
 5   namespace: cpu-example
 6 spec:
 7   containers:
 8   - name: cpu-demo-ctr
 9     image: vish/stress
10     resources:
11       limits:
12         cpu: "1"
13       requests:
14         cpu: "0.5"
15     args:
16     - -cpus
17     - "2"

配置文件的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: "1"
  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-2
  namespace: cpu-example
spec:
  containers:
  - name: cpu-demo-ctr-2
    image: vish/stress
    resources:
      limits:
        cpu: "100"
      requests:
        cpu: "100"
    args:
    - -cpus
    - "2"

创建Pod:

kubectl apply -f cpu-request-limit-2.yaml --namespace=cpu-example

查看POD状态:

kubectl get pod cpu-demo-2 --namespace=cpu-example

输出显示POD状态为挂起。也就是说,pod没有被安排在任何节点上运行,它将无限期地保持在挂起状态:

kubectl get pod cpu-demo-2 --namespace=cpu-example
NAME         READY     STATUS    RESTARTS   AGE
cpu-demo-2   0/1       Pending   0          7m

查看有关POD的详细信息,包括事件:

kubectl describe pod cpu-demo-2 --namespace=cpu-example

输出显示,由于节点上的CPU资源不足,无法计划容器:

Events:
  Reason                        Message
  ------                        -------
  FailedScheduling      No nodes are available that match all of the following predicates:: Insufficient cpu (3).

删除Pod:

kubectl delete pod cpu-demo-2 --namespace=cpu-example

如果未指定CPU限制

如果未指定容器的CPU限制,则以下情况之一适用:

- 容器对它可以使用的CPU资源没有上限。容器可以使用其运行所在节点上可用的所有CPU资源。

- 容器正在具有默认CPU限制的命名空间中运行,容器将自动分配默认限制。群集管理员可以使用LimitRange指定CPU限制的默认值。

CPU请求和限制的动机

通过配置集群中运行的容器的CPU请求和限制,可以有效地利用集群节点上可用的CPU资源。通过保持Pod CPU请求低,可以给Pod很好的被调度的机会。通过CPU限制大于CPU请求,您可以完成两件事:

- pod可以有突发的活动,在那里它可以利用cpu资源碰巧是可用的。

- pod在突发期间可以使用的cpu资源量被限制在某个合理的数量。

原文地址:https://www.cnblogs.com/UniqueColor/p/11607629.html

时间: 2024-11-05 14:42:41

配置Pods和containers--为Containers和Pods分配CPU资源的相关文章

1-2 给容器和PODS 分配CPU资源

这一小节讲述 如何对容器分配CPU资源和对CPU资源使用做限制.一个容器被保证有足够的CPU资源可以被调用,但是也不允许使用超过CPU资源的限制. 创建一个命名空间 kubectl create namespace cpu-example 定义一个CPU资源请求和CPU资源限制 资源请求resources:requests 资源限制resources:limits 在这个练习中,你创建了一个POD拥有 0.5cpu和1cpu的限制apiVersion: v1kind: Podmetadata:n

配置Pods和containers--为Containers和Pods分配内存资源

指定内存请求和内存限制 要为容器指定内存请求,在容器的资源清单中使用resources:requests字段.要指定内存限制,使用resources:limits. memory-request-limit.yaml 1 apiVersion: v1 2 kind: Pod 3 metadata: 4 name: memory-demo 5 namespace: mem-example 6 spec: 7 containers: 8 - name: memory-demo-ctr 9 image

Asp.Net配置不允许通过url方式访问目录下的资源

Asp.Net网站发布后,有部分文件为了安全性,是不能直接通过url访问获取 通常有2种做法: 1.将文件目录建立在 App_code 或者App_Data 等默认的隐藏目录下 2.将文件的目录添加到请求筛选的隐藏段里面,使文件不可直接通过url访问 在IIS配置是请求筛选--->添加隐藏段 ,在IIS里面的配置其实就是配置web.Config文件 也可以直接在web.Config文件里面配置,configuration/system.webServer/security/requestFilt

windows配置caffe及matlab接口编译和调用(cpu和gpu)

环境:windows 7+matlab2016a+vs2013 caffe下载地址:https://github.com/BVLC/caffe/tree/windows 1 进入caffe-windows的windows文件夹,Copy .\windows\CommonSettings.props.example to .\windows\CommonSettings.props 2 打开caffe工程,编辑CommonSettings.props文件,以下是cpu版本设置 <CpuOnlyBu

低配置电脑播放 flash 视频时 占 cpu 资源过高的解决方法

安装低版本的 flash player 版本, 经调试能满足播放的最低版本是 Flash Player 10.3.183.90 然后 firefox 3.6.28 + Adblock Plus 2.0.3.1 过滤广告, 连接广告时也占不少资源 Flash Player 10.3.183.90 其他 flashplayer 版本 Archived Flash Player versions Firefox 3.6.28 其他 firefox 版本 ftp firefox releases

第三章 Hyper-V 2012 R2配置选项

原书中的第二章 是介绍了下hyper-v的管理器和检查点的使用,导入导出虚拟机,所以我跳过了不高兴写,很简单.直接进入第三部分,介绍虚拟机的三个重要组成部分:CPU,内存,硬盘的配置选项. Hyper-v虚拟处理器 在Hyper-v中,系统对于虚拟处理器的管理偏向"粗犷",和同类产品VMware的ESXI相比,Hyper-v并不是将CPU的主频叠加,然后根据每一台虚拟机分配相应主频的资源:Hyper-v仅以物理CPU核心数进行资源分配,这种方式降低了逻辑架构的理解难度,但并不是说此种处

Spark 性能相关参数配置详解-任务调度篇

随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇幅较长,所以在这里分篇组织,如果要看最新完整的网页版内容,可以戳这里:http://spark-config.readthedocs.org/,主要是便于更新内容 schedule调度相关 调度相关的参数设置,大多数内容都很直白,其实无须过多的额外解释,不过基于这些参数的常用性(大概会是你针对自己的

Spark 性能相关參数配置具体解释-任务调度篇

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 随着Spark的逐渐成熟完好, 越来越多的可配置參数被加入到Spark中来, 本文试图通过阐述这当中部分參数的工作原理和配置思路, 和大家一起探讨一下怎样依据实际场合对Spark进行配置优化. 因为篇幅较长.所以在这里分篇组织,假设要看最新完整的网页版内容.能够戳这里:http://spark-config.readthedoc

kvm中的cpu配置

在QEMU/KVM中,qemu提供对cpu的模拟,展现给客户机一定的cpu数目和cpu特性:在KVM打开的情况下,客户机中cpu指令的执行有硬件处理器的虚拟化功能来辅助执行,具有非常高的效率. Qemu/kvm为客户机提供一套完整的硬件系统环境,在客户机看来其所拥有的cpu即是vcpu(virtual CPU).在KVM环境中,每个客户机都是一个标准的Linux进程(qemu进程),而每一个vCPU在宿主机中是Qemu进程派生的一个普通线程. 在普通的Linux系统中,进程一般有两种执行模式:内