博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
K8S如何限制资源使用
阅读量:6580 次
发布时间:2019-06-24

本文共 1722 字,大约阅读时间需要 5 分钟。

本文介绍几种在K8S中限制资源使用的几种方法。

资源类型

在K8S中可以对两类资源进行限制:cpu和内存。

CPU的单位有:

  • 正实数,代表分配几颗CPU,可以是小数点,比如0.5代表0.5颗CPU,意思是一 颗CPU的一半时间。2代表两颗CPU。
  • 正整数m,也代表1000m=1,所以500m等价于0.5

内存的单位:

  • 正整数,直接的数字代表Byte
  • kKKi,Kilobyte
  • mMMi,Megabyte
  • gGGi,Gigabyte
  • tTTi,Terabyte
  • pPPi,Petabyte

方法一:在Pod Container Spec中设定资源限制

在K8S中,对于资源的设定是落在Pod里的Container上的,主要有两类,limits控制上限,requests控制下限。其位置在:

  • spec.containers[].resources.limits.cpu
  • spec.containers[].resources.limits.memory
  • spec.containers[].resources.requests.cpu
  • spec.containers[].resources.requests.memory

举例:

apiVersion: v1 kind: Pod metadata: name: frontend spec: containers: - name: ... image: ... resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m"

方法二:在Namespace中限定

方法一虽然很好,但是其不是强制性的,因此很容易出现因忘记设定limits/request,导致Host资源使用过度的情形,因此我们需要一种全局性的资源限制设定,以防止这种情况发生。K8S通过在Namespace设定LimitRange来达成这一目的。

配置默认request/limit

如果配置里默认的request/limit,那么当Pod Spec没有设定request/limit的时候,会使用这个配置,有效避免无限使用资源的情况。

配置位置在:

  • spec.limits[].default.cpu,default limit
  • spec.limits[].default.memory,同上
  • spec.limits[].defaultRequest.cpu,default request
  • spec.limits[].defaultRequest.memory,同上

例子:

apiVersion: v1 kind: LimitRange metadata: name: 
spec: limits: - default: memory: 512Mi cpu: 1 defaultRequest: memory: 256Mi cpu: 0.5 type: Container

配置request/limit的约束

我们还可以在K8S里对request/limit进行以下限定:

  • 某资源的request必须>=某值
  • 某资源的limit必须<=某值

这样的话就能有效避免Pod Spec中乱设limit导致资源耗尽的情况,或者乱设request导致Pod无法得到足够资源的情况。

配置位置在:

  • spec.limits[].max.cpulimit必须<=某值
  • spec.limits[].max.memory,同上
  • spec.limits[].min.cpurequest必须>=某值
  • spec.limits[].min.memory,同上

例子:

apiVersion: v1 kind: LimitRange metadata: name: 
spec: limits: - max: memory: 1Gi cpu: 800m min: memory: 500Mi cpu: 200m type: Container
本文转自中文社区-

转载地址:http://daino.baihongyu.com/

你可能感兴趣的文章
[leetcode]count and say
查看>>
flex java socket通信
查看>>
比VC的TRACE还要好的调试命令
查看>>
回忆大学到现在为止学到了什么?
查看>>
润乾报表 - 缓存问题
查看>>
ecshop修改用户登录成功和退出成功的提示页面信息
查看>>
C Cheat Sheet
查看>>
log4j:ERROR Could not read configuration file [log4j.properties].
查看>>
图像处理经典图片Lena背后的故事
查看>>
NSData
查看>>
Design Pattern - 7原则
查看>>
[译] wxWidgets - wxDir
查看>>
gjrand 4.0.1 发布,伪随机数生成器
查看>>
每天一个linux命令(53):route命令
查看>>
使用反射获取Android中隐藏的方法
查看>>
PHP开发者常犯的10个MySQL错误
查看>>
计算图像相似度——《Python也可以》之一(转)
查看>>
Go编程语言规范2-类型
查看>>
对比shrink和move
查看>>
C# Compiler Options
查看>>