资源配额

资源配额

我们可以给某个命名空间设置资源配额,比如在命名空间default下创建一个如下的ResourceQuota对象

apiVersion: v1
kind: ResourceQuota
metadata:
  name: resourcequota
  namespace: default
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "100"

那么,default命名空间下,所有Pod的

  • requests.cpu之和不能超过"1"

  • requests.memory之和不能超过"1Gi"

  • limits.cpu之和不能超过“2”

  • limits.memory之和不能超过“2Gi”

  • pods数不能超过“100”

当我们在命名空间中创建了一个ResourceQuota对象之后,该命名空间下所有的Pod都必须指定requests与limits。

LimitRange

我们可以在命名空间中创建一个LimitRange对象,如下:

apiVersion: v1
kind: LimitRange
metadata:
  name: limitrange
  namespace: default
spec:
  limits:
  - type: Container
    min:
      cpu: "0.5"
      memory: 512Mi
    max:
      cpu: "1"
      memory: 1Gi
    defaultRequest:
      cpu: "0.8"
      memory: 800Mi
    default:
      cpu: "0.8"
      memory: 800Mi

那么,该命名空间下的Pod的资源配置需要满足:

  • min.cpu <= requests.cpu <= limits.cpu <= max.cpu

  • min.memory <= requests.memory <= limits.memory <= max.memory

如果该命名空间下的Pod没有指定requests与limits,那么

  • requests.cpu会默认设置为defaultRequest.cpu

  • requests.memory会默认设置为defaultRequest.memory

  • limits.cpu会默认设置为default.cpu

  • limits.memory会默认设置为default.memory

注意事项

虽然我们可以在一个命名空间下创建多个ResourceQuota与LimitRange对象,但是我们并不建议这么做,因为这会导致不可预知的效果

Last updated

Was this helpful?