# 限定 Limit/Request 比例

参考文档:Limit Ranges

本文讨论了如何使用 LimitRange 在名称空间中限制 Limits/Requests 的比例。如果指定了 LimitRange 对象的 spec.limits.maxLimitRequestRatio 字段,名称空间中的 Pod/容器的 request 和 limit 都不能为 0,且 limit 除以 request 的结果必须小于或等于 LimitRange 的 spec.limits.maxLimitRequestRatio

下面的例子中 LimitRange 限定了名称空间中任何 Pod 的最大内存限定(limit)不能超过最小内存请求(request)的两倍:








 


apiVersion: v1
kind: LimitRange
metadata:
  name: limit-memory-ratio-pod
spec:
  limits:
  - maxLimitRequestRatio:
      memory: 2
    type: Pod
1
2
3
4
5
6
7
8
9
  • 执行命令以创建该 LimitRange:

    kubectl create -f https://kuboard.cn/statics/learning/policy/lr-ratio-limit-range.yaml -n limitrange-demo
    
    1

    执行命令以查看创建结果:

    kubectl describe limitrange/limit-memory-ratio-pod -n limitrange-demo
    
    1

    输出结果如下所示:

    Name:       limit-memory-ratio-pod
    Namespace:  limitrange-demo
    Type        Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio
    ----        --------  ---  ---  ---------------  -------------  -----------------------
    Pod         memory    -    -    -                -              2
    
    1
    2
    3
    4
    5
  • 此时,如果我们创建一个 Pod 包含如下属性 requests.memory=100Milimits.memory=300Mi











     

     

    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox3
    spec:
      containers:
      - name: busybox-cnt01
        image: busybox
        resources:
          limits:
            memory: "300Mi"
          requests:
            memory: "100Mi"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    执行命令以创建该 Pod:

    kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-ratio-pod.yaml -n limitrange-demo
    
    1

    由于该 Pod 的内存限制请求比例为 3,超过了 LimitRange 中定义的 2,该 Pod 将不能创建成功:

    Error from server (Forbidden): error when creating "lr-ratio-pod.yaml": pods "busybox3" is forbidden: memory max limit to request ratio per Pod is 2, but provided ratio is 3.000000.
    
    1