K8S限制资源的使用

资源类型

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

  • 正实数,代表分配几颗CPU,可以是小数点,比如0.5代表0.5颗CPU,意思是一 颗CPU的一半时间。2代表两颗CPU。
  • 正整数m,也代表1000m=1,所以500m等价于0.5。
    内存的单位:
  • 正整数,直接的数字代表Byte
  • k、K、Ki,Kilobyte
  • m、M、Mi,Megabyte
  • g、G、Gi,Gigabyte
  • t、T、Ti,Terabyte
  • p、P、Pi,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: <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.cpu,limit必须<=某值
  • spec.limits[].max.memory,同上
  • spec.limits[].min.cpu,request必须>=某值
  • spec.limits[].min.memory,同上

举例

apiVersion: v1
kind: LimitRange
metadata:
     name: <name>
spec:
     limits:
     - max:
            memory: 1Gi
            cpu: 800m
       min:
           memory: 5OOMi
           cpu: 200m
       type: Container

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值