ljzsdut
GitHubToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage
Edit page

9.2 K8s资源对象 Limit Range与名称空间的配额 Resource Quota

资源对象的max/min限制(LimitRange)

apiVersino: v1
kind: LimitRange    #简称limits
metadata:
  name: test-limits
spec:
  limits:
  - type: Pod  #如果Pod指定了resource,则对limit/request配置项的限制
    max:
      cpu: 4000m
      memory: 2Gi
    min:
      cpu: 100m
      memory: 100Mi
    maxLimitRequestRatio:  #limit与request的比值
      cpu: 3
      memory: 2
  - type: Container  #对Container的limit/request配置项的限制
    default:  #Container未指定resource.limit时的默认值
      cpu: 300m
      memory: 200Mi
    defaultRequest:  #Container未指定resource.request时的默认值
      cpu: 200m
      memory: 100Mi
    max:
      cpu: 4000m
      memory: 2Gi
    min:
      cpu: 100m
      memory: 100Mi
    maxLimitRequestRatio:
      cpu: 3
      memory: 2

名称空间的配额

ResourceQuota对所在namespace进行配额限制。

apiVersion: v1
kind: ResourceQuota  #https://kubernetes.io/docs/concepts/policy/resource-quotas/
metadata:
  name: resourece-quota
spec:
  hard:
    #Compute Resource Quota
    requests.cpu: 2000m
    requests.memory: 4Gi
    limits.cpu: 4000m
    limits.momory: 8Gi
    #Object Count Quota
    pods: 4
    configmaps: 10
    persistentvolumeclaims: 4
    replicationcontrollers: 20
    deployments.apps: 10
    secrets: 10
    services: 10
    #Storage Resource Quota
    #...
  #scopeSelector:  #可选
  #  matchExpressions:
  #  - operator : In
  #    scopeName: PriorityClass
  #    values: ["high"]    

pod可以以指定的优先级创建,你可以通过pod的优先级来控制pod对系统资源的使用,它是通过配额的spec下的scopeSelector字段产生效果的。

scopeName : [Terminating, NotTerminating, BestEffort, NotBestEffort, PriorityClass]

Operator: [In, NotIn, Exists, DoesNotExist]

注意:

1、只有当配额spec的scopeSelector选择了一个pod,配额才会被匹配和消费 2、若scopeName为前四个,则Operator只能为Exists或DoesNotExist,且不需要设置value 3、若scopeName为PriorityClass,则Operator为In或者NotIn,且需要设置value

kubectl describe quota