9.2 K8s资源对象 Limit Range与名称空间的配额 Resource Quota
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