LimitRange 校验资源申请和限制量

Kubernetes 提供了 LimitRange 资源,用来校验 Pod 中的资源申请量以及限制量,包括 设置默认值 以及 校验是否在指定范围内

  1. 设置默认值:避免必须为每个容器都配置 requestslimits

  2. 校验范围:阻止用户创建大于宿主机资源量的 Pod;

该资源不仅可以用来校验 Pod 和容器内部的资源申请和限制量,还可以校验如 PVC 的底层存储容量的申请量等其他资源。

LimitRange 资源被 API 服务器中的 LimitRanger 准入控制插件加载,当 API 服务器收到 Pod 的请求时,会对其规格进行校验,如果校验失败就拒绝请求。(该准入插件默认开启)

LimitRange 是 命名空间级别 的资源,因此其只能应用于 同一个命名空间中 每个独立的 Pod、容器或者其他类型的对象。

创建 LimitRange

可以通过 YAML 描述文件创建 LimitRange 对象。下面展示一个创建案例,该案例中分别针对 Pod、容器以及 PVC 三类资源进行校验:

apiVersion: v1
kind: LimitRange    # 资源类型为 LimitRange
metadata:
  namespace: default    # 对 default 命名空间中的资源有效
  name: example
spec:
  limits:
  - type: Pod    # 针对 Pod 进行限制
    min:    # Pod 中所有容器的 CPU 和内存的 requests 的总和的最小值
      cpu: 50m
      memory: 5Mi
    max:    # Pod 中所有容器的 CPU 和内存的 limits 的总和的最大值
      cpu: 1
      memory: 1Gi
  - type: Container    # 针对容器进行限制
    defaultRequest:    # 设置容器的默认 CPU 和内存的 requests 值
      cpu: 100m
      memory: 10Mi
    default:    # 设置容器的默认 CPU 和内存的 limits 值
      cpu: 200m
      memory: 100Mi
    min:    # 设置容器的 CPU 和内存的 requests 的最小值
      cpu: 50m
      memory: 5Mi
    max:    # 设置容器的 CPU 和内存的 limits 的最大值
      cpu: 1
      memory: 1Gi
    maxLimitRequestRatio:    # 设置容器的 CPU 和内存两种资源各自的 requests 和 limits 的最大比值
      cpu: 4    # CPU 的 limits 不能超过 requests 的 4 倍
      memory: 10
  - type: PersistentVolumeClaim    # 针对 PVC 进行限制
    min:    # 创建的 PVC 资源请求的存储容量最小值
      storage: 1Gi
    max:    # 创建的 PVC 资源请求的存储容量最大值
      storage: 10Gi

Last updated

Was this helpful?