示例

配置默认的requests和limits

创建一个requests.cpu默认为0.5(0.5为半颗CPU,1个CPU等于1000m)、requests.memory默认为256MB;limits.cpu为1、limits.memory为512MB的LimitRange:

cpu-mem-limit-range.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-mem-limit-range
spec:
  limits:
  - default:
      cpu: 1
      memory: 512Mi
    defaultRequest:
      cpu: 500m
      memory: 256Mi
    type: Container
$ kubectl create -f cpu-mem-limit-range.yaml -n quota-example
limitrange/cpu-mem-limit-range created

$ kubectl get limitrange -n quota-example
NAME                  CREATED AT
cpu-mem-limit-range   2023-12-06T08:55:02Z

$ kubectl describe limitrange cpu-mem-limit-range -n quota-example
Name:       cpu-mem-limit-range
Namespace:  quota-example
Type        Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---  ---  ---------------  -------------  -----------------------
Container   cpu       -    -    500m             1              -
Container   memory    -    -    256Mi            512Mi          -
假如此时创建一个没有配置requests和limits的Pod
apiVersion: v1
kind: Pod
metadata:
  name: default-cpu-demo
spec:
  containers:
  - name: myapp
    image: nginx:1.16-alpine
$ kubectl get pod default-cpu-demo -n quota-example -o yaml
...
spec:
  containers:
  - image: nginx:1.16-alpine
    imagePullPolicy: IfNotPresent
    name: myapp
    resources:
      limits:
        cpu: "1"
        memory: 512Mi
      requests:
        cpu: 500m
        memory: 256Mi
...

可以看到该Pod被设置为LimitRanger的默认配置。

注意:

  • 如果在Pod的Container中配置了requests和limits参数,会以自行配置的参数为准(如果没有超过LimitRanger的最大、最小限制的话)。

  • 如果配置了limits而没有配置requests,那么requests的默认值将被设置成limits配置的参数。

配置requests和limits的范围

上述针对没有设置requests和limits字段的资源添加了默认值,但是并没有限制requests和limits的最大值和最小值。在管理资源分配时,对requests和limits的最大值和最小值也需要进行管控。

创建一个内存最小值为500MB、最大值为1GB;CPU最小值为200MB、最大值为800MB的LimitRange:

cpu-mem-min-max-demo.yaml

$ kubectl describe limitrange cpu-mem-min-max-demo -n quota-example
Name:       cpu-mem-min-max-demo
Namespace:  quota-example
Type        Resource  Min    Max   Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---   ---------------  -------------  -----------------------
Container   cpu       200m   800m  800m             800m           -
Container   memory    500Mi  1Gi   1Gi              1Gi            -

限制申请存储空间的大小

LimitRange也可以对存储申请的大小进行限制。比如限制PVC申请空间的最小值为1GB、最大值为2GB(结合ResourceQuota可以同时限制最多存储使用量和最大PVC创建的数量)

storagelimits.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: storagelimits
spec:
  limits:
  - type: PersistentVolumeClaim
    max:
      storage: 2Gi
    min:
      storage: 1Gi
$ kubectl describe limitrange storagelimits -n quota-example
Name:                  storagelimits
Namespace:             quota-example
Type                   Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio
----                   --------  ---  ---  ---------------  -------------  -----------------------
PersistentVolumeClaim  storage   1Gi  2Gi  -                -              -

最后更新于