LimitRange和ResourceQuota的配置语法

LimitRange 配置语法

LimitRange 用于为命名空间中的 Pod 和容器设置资源限制和默认值。它的配置主要由 apiVersionkindmetadataspec 几个部分组成。

完整示例
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange # LimitRange 的名称
spec:
  limits:
  - type: Container # 限制类型,这里是容器
    max: # 容器可以使用的最大资源量
      cpu: "1" # 最大 CPU 限制为 1 个核心
      memory: "1Gi" # 最大内存限制为 1GiB
    min: # 容器必须请求的最小资源量
      cpu: "100m" # 最小 CPU 请求为 100 毫核心
      memory: "100Mi" # 最小内存请求为 100MiB
    default: # 容器的默认资源限制
      cpu: "200m" # 默认 CPU 限制为 200 毫核心
      memory: "200Mi" # 默认内存限制为 200MiB
    defaultRequest: # 容器的默认资源请求
      cpu: "100m" # 默认 CPU 请求为 100 毫核心
      memory: "100Mi" # 默认内存请求为 100MiB
    maxLimitRequestRatio: # 最大限制与请求的比率
      cpu: "10" # CPU 的最大限制与请求的比率为 10
      memory: "2" # 内存的最大限制与请求的比率为 2
说明
  • apiVersion:指定 API 版本,对于 LimitRange 通常是 v1
  • kind:指定资源类型,这里是 LimitRange
  • metadata:包含 LimitRange 的元数据,如 name(名称),用于唯一标识该 LimitRange。
  • spec:定义 LimitRange 的具体规范。
    • limits:一个列表,包含针对不同类型资源(如 ContainerPod 等)的限制规则。
    • type:指定限制应用的资源类型,常见的是 Container,也可以是 Pod
    • max:设置资源的最大限制。
    • min:设置资源的最小请求。
    • default:设置资源的默认限制。
    • defaultRequest:设置资源的默认请求。
    • maxLimitRequestRatio:设置资源最大限制与请求的比率。

ResourceQuota 配置语法

ResourceQuota 用于在命名空间级别设置资源配额。它的配置结构与 LimitRange 类似,也包含 apiVersionkindmetadataspec 部分。

完整示例
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resourcequota # ResourceQuota 的名称
spec:
  hard: # 硬限制,不允许超过此配额
    requests.cpu: "10" # CPU 请求总量不能超过 10 个核心
    requests.memory: "20Gi" # 内存请求总量不能超过 20GiB
    limits.cpu: "20" # CPU 限制总量不能超过 20 个核心
    limits.memory: "40Gi" # 内存限制总量不能超过 40GiB
    pods: "100" # Pod 的数量不能超过 100 个
    services: "50" # 服务的数量不能超过 50 个
    replicationcontrollers: "30" # 复制控制器的数量不能超过 30 个
    resourcequotas: "1" # ResourceQuota 的数量不能超过 1 个(通常一个命名空间一个)
    persistentvolumeclaims: "50" # 持久卷声明的数量不能超过 50 个
  scopeSelector: # 可选的范围选择器
    matchExpressions:
    - scopeName: kubernetes.io/hostname # 基于节点主机名的范围
      operator: In
      values:
      - node1.example.com
      - node2.example.com
说明
  • apiVersion:指定 API 版本,通常为 v1
  • kind:指定资源类型为 ResourceQuota
  • metadata:包含 ResourceQuota 的元数据,如 name
  • spec:定义 ResourceQuota 的规范。
    • hard:设置各种资源的硬限制,这些限制是不允许突破的。资源类型包括 requests.cpurequests.memorylimits.cpulimits.memory 等可计量资源,以及 podsservices 等命名资源。
    • scopeSelector(可选):用于选择特定范围的资源进行配额限制。可以基于节点标签、资源标签等条件进行筛选。例如上述示例中基于节点主机名进行筛选。

通过合理配置 LimitRange 和 ResourceQuota,可以有效地管理 Kubernetes 命名空间内的资源使用,确保资源的合理分配和系统的稳定运行。

你可能感兴趣的:(k8s,java,rpc,开发语言)