kubernetes中LimitRange的理解
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