LimitRange生产必备
在调度的时候 requests 比较重要,在运行时 limits 比较重要。
一、产生原因
生产中只有ResourceQuota是不够的
只配置ResourceQuotas的情况下,pod的yaml文件没有配置resources配置,都是0的话,就可以无限配置,永远达不到limit
LimitRange做了什么
如果pod里面没有配置resources参数,这个时候ResourceQuotas是识别不出来的。我们创建了LimitRange,则这个pod会根据LimitRange的配置自动添加CPU内存配置,所有pod累加不能超过ResourceQuotas的限制。
二、LimitRange配置示例
1. 默认的requests和limits
apiVersion: v1
kind: LimitRange
metadata:name: cpu-mem-limit-range
spec:limits:- default: # 默认limits配置cpu: 1memory: 512MidefaultRequest: # 默认requests配置cpu: 0.5memory: 256Mitype: Container
➢ default:默认limits配置
➢ defaultRequest:默认requests配置
如果pod没有配置cpu和内存,则pod会填充使用defaultRequest中的内容。
如果pod只配置Request参数,没有配置limit参数,则pod会自动填充default中的内容。
2. requests和limits的范围
apiVersion: v1
kind: LimitRange
metadata:name: cpu-min-max-demo-lr
spec:limits:- max: # 内存CPU的最大配置cpu: "800m"memory: 1Gimin: # 内存CPU的最小配置cpu: "200m"memory: 500Mitype: Container
➢ max:内存CPU的最大配置
➢ min:内存CPU的最小配置
3. 限制申请存储空间的大小
apiVersion: v1
kind: LimitRange
metadata:name: storagelimits
spec:limits:- type: PersistentVolumeClaimmax: # 最大PVC的空间storage: 2Gimin