UP | HOME

管理namespace中的资源配额

Table of Contents

当用多个团队或者用户共用同一个集群的时候难免会有资源竞争的情况发生,这时候就需要对不同团队或用户的资源使用配额做出限制

开启

目前有两种资源分配管理相关的控制策略插件 ResourceQuota 和 LimitRange

要启用它们只要 API Server 的启动配置的 KUBE_ADMISSION_CONTROL 参数中:

  • 加入了 ResourceQuota 的设置,这样就给集群开启了资源配额限制功能
  • 加入 LimitRange 可以用来限制一个资源申请的范围限制
两种控制策略的作用范围都是对于某 namespace:

ResourceQuota 用来限制 namespace 中所有的 Pod 占用的总的资源 request 和 limit

LimitRange 是用来设置 namespace 中 Pod 的默认的资源 request 和 limit 值

资源配额分为三种类型:

  • 计算 资源配额
  • 存储 资源配额
  • 对象 数量配额

示例

假设已经为 spark-cluster 这个 namespace 设置 ResouceQuota 和 LimitRange

配置计算资源配额

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: spark-cluster
spec:
  hard:
    pods: "20"
    requests.cpu: "20"
    requests.memory: 100Gi
    limits.cpu: "40"
    limits.memory: 200Gi

要想查看该配置只要执行:

kubectl -n spark-cluster describe resourcequota compute-resources

配置对象数量限制

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
  namespace: spark-cluster
spec:
  hard:
    configmaps: "10"
    persistentvolumeclaims: "4"
    replicationcontrollers: "20"
    secrets: "10"
    services: "10"
    services.loadbalancers: "2"

配置CPU和内存LimitRange

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 50Gi
      cpu: 5
    defaultRequest:
      memory: 1Gi
      cpu: 1
    type: Container
  • default: limit 的值
  • defaultRequest: request 的值
Previous: Secret Home:配置