指定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资源的更多相关文章

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

    指定内存请求和内存限制 要为容器指定内存请求,在容器的资源清单中使用resources:requests字段.要指定内存限制,使用resources:limits. memory-request-li ...

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

    Asp.Net网站发布后,有部分文件为了安全性,是不能直接通过url访问获取 通常有2种做法: 1.将文件目录建立在 App_code 或者App_Data 等默认的隐藏目录下 2.将文件的目录添加到 ...

  3. 配置AD RMS及SharePoint 2013 IRM问题解决及相关资源

    最近配置AD RMS及SharePoint 2013 IRM遇到几个问题: 1. RMS配置好后,client端连不上, 一直要求输入用户名和密码. 后来换了台不是SP的机器,并用内部DB,搞定.   ...

  4. MySQL5.7.19 免安装配置 + Navicat for MySQL安装和破解(附全部资源)

    近段时间因为工作原因安装了好多次本地MySQL,安装过程也是时有曲折,索性记录一下. 环境: Win10 家庭版 MySQL5.7.19   (链接:https://pan.baidu.com/s/1 ...

  5. IDEA maven 配置,运行比较慢,加截本地仓库资源数据

    在 Runner 配置了参数: -DarchetypeCatalog=internal

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

    安装低版本的 flash player 版本, 经调试能满足播放的最低版本是 Flash Player 10.3.183.90 然后 firefox 3.6.28 + Adblock Plus 2.0 ...

  7. 【适合核显电脑的环境配置】Tensorflow教程-Windows 10下安装tensorflow CPU with Anaconda

    安装TensorFlow 1.5.0 CPU版本 :仅支持CPU的TensorFlow. 如果您的系统没有NVIDIA GPU,则必须安装此版本. 1.首先下载和安装Anaconda TensorFl ...

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

    原书中的第二章 是介绍了下hyper-v的管理器和检查点的使用,导入导出虚拟机,所以我跳过了不高兴写,很简单.直接进入第三部分,介绍虚拟机的三个重要组成部分:CPU,内存,硬盘的配置选项. Hyper ...

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

    随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇 ...

随机推荐

  1. linux中的halt和shutdown

    最近一直在学鸟哥的Linux私房菜,突然想起来,halt 和 shutdown的区别好像没有搞懂 ** 所以我检索了一下,发现区别是这样的.halt和shutdown都是关闭系统,但是halt不会关闭 ...

  2. docker, docker-compose安装和使用

    官方文档: 安装docker: https://docs.docker.com/install/linux/docker-ce/centos/ 安装docker-compose: https://do ...

  3. 接口自动化测试框架【windows版】:jmeter + ant + jenkins

    为了提高回归效率及保证版本质量,很多公司都在做自动化测试,特别是接口自动化.接口自动化测试框架很多,有写代码的,也有不写代码的,我觉得没有谁比谁好,谁比谁高级之说,只要适用就好. 今天给大家分享一个不 ...

  4. 五个wordpress调用随机文章的方法

    分享几个WordPress不用插件调用随机文章的方法,不仅增强用户粘性,而且当蜘蛛来爬你的文章的时候每次都会有变化,搜索引擎很喜欢.主要用到的是orderby rand参数,下面就随ytkah一起来看 ...

  5. Excel——读取文件后——组装成待插入数据库数据——实体映射模式

    package com.it.excel.excelLearn; import java.io.IOException; import java.util.HashMap; import java.u ...

  6. vue 实战

    vue 实战 Vue命令行工具vue-cli https://www.cnblogs.com/xiaohuochai/p/7277771.html https://github.com/ymblog/ ...

  7. PHP:ThinkCMFX任意文件包含漏洞

    前言:最近爆出来的漏洞,ThinkCmfX版本应该是通杀的,基于3.X Thinkphp开发的 代码下载地址:https://gitee.com/thinkcmf/ThinkCMFX/releases ...

  8. CF732D Exams 题解

    CF732D Exams 题目描述 Vasiliy has an exam period which will continue for \(n\) days. He has to pass exam ...

  9. 【JZOJ5551】【20190625】旅途

    题目 \(n\)个点\(m\)条边的无向图,一条路径的代价定义为路径上前\(k\)大边的边权和 对于$k = n \to 1 $,求1-n的最短路 \(n,m \le 3000 \ , \ w_i \ ...

  10. linux grep 查询多行的方法

    linux grep 查询多行的方法 经常查询 git log 中使用的方法, 如下 git log |grep "xxxx" 如果想查询多行的话, 就有些尴尬, 如果想查询多行的 ...