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