系列目录

首先我们创建一个名称空间

kubectl create namespace quota-mem-cpu-example

创建资源配额

apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi

通过命令创建它

kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu.yaml --namespace=quota-mem-cpu-example

查看它的详细信息:

kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml

资源配额对名称空间quota-mem-cpu-example增加了以下限制:

  • 每一个pod都必须内存申请/限制,cpu申请/限制

这里是针对上面的示例来说的,因为示例中配额同时配置了这4个选项,因此pod必须声明这四个选项

  • 所有容器内存申请总和不得超过1G

  • 所有内存限制不得超过2g

  • 所有容器申请的cpu不得超过1

  • 所有容器限制的cpu不得超过2

下面创建一个pod

apiVersion: v1
kind: Pod
metadata:
name: quota-mem-cpu-demo
spec:
containers:
- name: quota-mem-cpu-demo-ctr
image: nginx
resources:
limits:
memory: "800Mi"
cpu: "800m"
requests:
memory: "600Mi"
cpu: "400m"

创建它

kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu-pod.yaml --namespace=quota-mem-cpu-example

查看配额详细信息

kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml
status:
hard:
limits.cpu: "2"
limits.memory: 2Gi
requests.cpu: "1"
requests.memory: 1Gi
used:
limits.cpu: 800m
limits.memory: 800Mi
requests.cpu: 400m
requests.memory: 600Mi

通过输出信息可以看到资源的配额值和已经使用的值,可以看到pod的申请和限制均没有超限

尝试再创建一个pod

apiVersion: v1
kind: Pod
metadata:
name: quota-mem-cpu-demo-2
spec:
containers:
- name: quota-mem-cpu-demo-2-ctr
image: redis
resources:
limits:
memory: "1Gi"
cpu: "800m"
requests:
memory: "700Mi"
cpu: "400m"

通过配置文件可以看到,pod申请的内存为700M,请注意已使用的申请内存和新请求的和已经超限.

600M+700M>1G

尝试创建pod

kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu-pod-2.yaml --namespace=quota-mem-cpu-example

输出信息

Error from server (Forbidden): error when creating "examples/admin/resource/quota-mem-cpu-pod-2.yaml":
pods "quota-mem-cpu-demo-2" is forbidden: exceeded quota: mem-cpu-demo,
requested: requests.memory=700Mi,used: requests.memory=600Mi, limited: requests.memory=1Gi

从输出信息可以看到,创建这个pod将会导致内存申请超限,因此第二个pod不会创建成功

如果想要对pod的资源进行限制,则可以使用LimitRange,使用了LimitRange后,超过LimitRange限制资源的pod将不会创建,并且如果容器没有指定申请或者限制,会被赋以LimitRange的默认值.

最新文章

  1. PHP验证用户登录例子-学习笔记
  2. Html中自定义鼠标的形状
  3. Source Insight 常用设置和快捷键大全
  4. if条件里比较浮点数
  5. IE调试网页之四:F12 开发人员工具控制台错误消息 (Windows)(转载)
  6. C语言:十进制进制转换为其他进制(思想:查表法)
  7. EMVTag系列7《静态签名数据》
  8. Linux下修改hostname
  9. 常见HTTP状态码大全
  10. C/C++跨平台的的预编译宏
  11. SQLSERVER执行时间统计工具SQLQueryStress
  12. 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)
  13. PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
  14. Quick Cocos2dx 初步战斗
  15. Dubbo 支持哪些序列化协议?
  16. Asp.net Core 项目中如何使用 MongoDB 数据库
  17. 人撒娇地撒基督教扫ID祭扫我京东is啊单间
  18. SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)
  19. Head First Python-Python中与文件相关的操作-读、处理、写
  20. Python列表的三种遍历(序号和值)的方法

热门文章

  1. 漫谈登录桩(MockStub)的实现
  2. Github与Eclipse连接(方法2成功:Pleiades)
  3. 使用electron将单页面vue webapp 打包成 PC端应用
  4. hust 1605 - Gene recombination(bfs+字典树)
  5. hdu 6118 度度熊的交易计划
  6. DataSet的Merge方法合并两张表
  7. 标准C程序设计七---111
  8. C# Array类的浅复制Clone()与Copy()的区别
  9. Reveal.js演讲幻灯片框架
  10. java中线程切换的开销