K8S_ResourceQuota与LimitRange的作用

发布于:2025-04-16 ⋅ 阅读:(30) ⋅ 点赞:(0)

ResourceQuota

作用详解
  • 资源总量控制ResourceQuota能对命名空间内的资源使用总量进行限制。在一个Kubernetes集群中,存在多个命名空间,每个命名空间可看作一个独立的工作单元。通过设置ResourceQuota,可以防止某个命名空间过度占用资源,保障其他命名空间的资源需求,实现资源在不同命名空间间的合理分配。
  • 资源类型覆盖广泛:它可以对多种类型的资源进行限制,包括计算资源(如CPU和内存)、存储资源(如持久卷声明)以及对象数量(如Pod、Service、Deployment等)。
  • 多租户管理:在多租户环境下,每个租户通常使用独立的命名空间。通过为不同租户的命名空间设置不同的ResourceQuota,能根据租户的需求和付费情况分配资源,实现租户间的资源隔离。
示例

下面是一个ResourceQuota的YAML文件示例:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-namespace-quota
  namespace: my-namespace
spec:
  hard:
    pods: "10"
    requests.cpu: "2"
    requests.memory: "4Gi"
    limits.cpu: "4"
    limits.memory: "8Gi"
    persistentvolumeclaims: "5"

在这个例子中,为my - namespace命名空间设置了资源配额:

  • pods: "10":该命名空间内最多可以创建10个Pod。
  • requests.cpu: "2":所有Pod对CPU的请求总量不能超过2个核心。
  • requests.memory: "4Gi":所有Pod对内存的请求总量不能超过4GiB。
  • limits.cpu: "4":所有Pod对CPU的限制总量不能超过4个核心。
  • limits.memory: "8Gi":所有Pod对内存的限制总量不能超过8GiB。
  • persistentvolumeclaims: "5":该命名空间内最多可以创建5个持久卷声明。

LimitRange

作用详解
  • 单个对象资源规范LimitRange用于限制命名空间内单个Pod或容器的资源请求和限制范围。它能确保每个容器或Pod的资源使用在合理范围内,避免个别容器请求过多资源或设置过小的资源限制。
  • 默认资源设置:当创建Pod或容器时,如果没有明确指定资源请求和限制,LimitRange可以为其提供默认值,保证资源使用的一致性和规范性。
  • 防止资源滥用:通过设置最小和最大资源限制,LimitRange可以防止用户不合理地请求资源,避免资源的浪费和滥用。
示例

以下是一个LimitRange的YAML文件示例:

apiVersion: v1
kind: LimitRange
metadata:
  name: my-namespace-limitrange
  namespace: my-namespace
spec:
  limits:
  - default:
      cpu: "1"
      memory: "2Gi"
    defaultRequest:
      cpu: "0.5"
      memory: "1Gi"
    max:
      cpu: "2"
      memory: "4Gi"
    min:
      cpu: "0.1"
      memory: "256Mi"
    type: Container

在这个例子中,为my - namespace命名空间设置了LimitRange

  • default:当容器没有指定资源限制时,默认的CPU限制为1个核心,内存限制为2GiB。
  • defaultRequest:当容器没有指定资源请求时,默认的CPU请求为0.5个核心,内存请求为1GiB。
  • max:容器可以请求的最大CPU为2个核心,最大内存为4GiB。
  • min:容器可以请求的最小CPU为0.1个核心,最小内存为256MiB。
  • type: Container:表明这个限制范围是针对容器的。

网站公告

今日签到

点亮在社区的每一天
去签到