kubernetes中LimitRange的理解
今天学习了LimitRange
,大概总结一下LimitRange
的用法,LimitRange
是在pod
和container
级别的资源限制,先看以下的例子:
apiVersion: v1
kind: LimitRange
metadata:
name: mylimits
spec:
limits:
- max:
cpu: "4"
memory: 2Gi
min:
cpu: 200m
memory: 6Mi
maxLimitRequestRatio:
cpu: 3
memory: 2
type: Pod
- default:
cpu: 300m
memory: 200Mi
defaultRequest:
cpu: 200m
memory: 100Mi
max:
cpu: "2"
memory: 1Gi
min:
cpu: 100m
memory: 3Mi
maxLimitRequestRatio:
cpu: 5
memory: 4
type: Container
pod
部分:
max
表示pod
中所有容器资源的Limit
值和的上限,也就是整个pod
资源的最大Limit
,如果pod
定义中的Limit
值大于LimitRange
中的值,则pod
无法成功创建。min
表示pod
中所有容器资源请求总和的下限,也就是所有容器request
的资源总和不能小于min
中的值,否则pod
无法成功创建。maxLimitRequestRatio
表示pod
中所有容器资源请求的Limit
值和request
值比值的上限,例如该pod
中cpu
的Limit
值为3,而request
为0.5,此时比值为6,创建pod
将会失败。
container
部分
- 在
container
的部分,max
、min
和maxLimitRequestRatio
的含义和pod
中的类似,只不过是针对单个的容器而言。下面说明几个情况:
如果
container
设置了max
,pod
中的容器必须设置limit
,如果未设置,则使用defaultlimt
的值,如果defaultlimit
也没有设置,则无法成功创建如果设置了
container
的min
,创建容器的时候必须设置request
的值,如果没有设置,则使用defaultrequest
,如果没有defaultrequest
,则默认等于容器的limit
值,如果limit
也没有,启动就会报错
defaultrequest
和defaultlimit
则是默认值,注意:pod
级别没有这两项设置
将limitrange
应用于namespace
就生效了,例如:
```
kubectl create -f limitrange-example.yaml --namespace=namespace-example