Limit Range

目录

理解 Limit Range

参考官方 Kubernetes 文档:Limit Ranges

使用 Kubernetes LimitRange 作为准入控制器是在容器或 Pod 级别进行资源限制。它为在 LimitRange 创建或更新后创建的容器或 Pod 设置默认请求值、限制值和最大值,同时持续监控容器的使用情况,确保命名空间内的资源不会超过定义的最大值。

容器的资源请求是资源限制与集群超额配置的比例。资源请求值作为调度器调度容器时的参考和标准。调度器会检查每个节点的可用资源(总资源 - 节点上已调度 Pod 中容器的资源请求总和)。如果新 Pod 容器的资源请求总和超过节点剩余可用资源,则该 Pod 不会被调度到该节点。

LimitRange 是一个准入控制器:

  • 它为所有未设置计算资源需求的容器应用默认请求和限制值。
  • 它跟踪使用情况,确保不超过命名空间中任何 LimitRange 定义的资源最大值和比例。

包括以下配置

资源字段
CPU
  • 默认请求
  • 限制
  • 最大值
内存
  • 默认请求
  • 限制
  • 最大值

使用 CLI 创建 Limit Range

YAML 文件示例

# example-limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
  namespace: example
spec:
  limits:
    - default:
        cpu: 100m
        memory: 100Mi
      defaultRequest:
        cpu: 50m
        memory: 50Mi
      max:
        cpu: 1000m
        memory: 1000Mi
      type: Container

通过 YAML 文件创建

kubectl apply -f example-limitrange.yaml

通过命令行直接创建

kubectl create limitrange example-limitrange --namespace=example --default='cpu=100m,memory=100Mi' --default-request='cpu=50m,memory=50Mi' --max='cpu=1000m,memory=1000Mi'