• 管理namespace中的资源配额
    • 开启资源配额限制功能
    • 示例
      • 配置计算资源配额
      • 配置对象数量限制
      • 配置CPU和内存LimitRange
    • 参考

    管理namespace中的资源配额

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

    开启资源配额限制功能

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

    要启用它们只要 API Server 的启动配置的 KUBE_ADMISSION_CONTROL 参数中加入了 ResourceQuota 的设置,这样就给集群开启了资源配额限制功能,加入 LimitRange 可以用来限制一个资源申请的范围限制,参考 为 namesapce 配置默认的内存请求与限额 和 在 namespace 中配置默认的CPU请求与限额。

    两种控制策略的作用范围都是对于某一 namespace,ResourceQuota 用来限制 namespace 中所有的 Pod 占用的总的资源 request 和 limit,而 LimitRange 是用来设置 namespace 中 Pod 的默认的资源 request 和 limit 值。

    资源配额分为三种类型:

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

    关于资源配额的详细信息请参考 kubernetes 官方文档 资源配额。

    示例

    我们为 spark-cluster 这个 namespace 设置 ResouceQuotaLimitRange

    以下 yaml 文件可以在 kubernetes-handbook 的 manifests/spark-with-kubernetes-native-scheduler 目录下找到。

    配置计算资源配额

    配置文件:spark-compute-resources.yaml

    1. apiVersion: v1
    2. kind: ResourceQuota
    3. metadata:
    4. name: compute-resources
    5. namespace: spark-cluster
    6. spec:
    7. hard:
    8. pods: "20"
    9. requests.cpu: "20"
    10. requests.memory: 100Gi
    11. limits.cpu: "40"
    12. limits.memory: 200Gi

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

    1. kubectl -n spark-cluster describe resourcequota compute-resources

    配置对象数量限制

    配置文件:spark-object-counts.yaml

    1. apiVersion: v1
    2. kind: ResourceQuota
    3. metadata:
    4. name: object-counts
    5. namespace: spark-cluster
    6. spec:
    7. hard:
    8. configmaps: "10"
    9. persistentvolumeclaims: "4"
    10. replicationcontrollers: "20"
    11. secrets: "10"
    12. services: "10"
    13. services.loadbalancers: "2"

    配置CPU和内存LimitRange

    配置文件:spark-limit-range.yaml

    1. apiVersion: v1
    2. kind: LimitRange
    3. metadata:
    4. name: mem-limit-range
    5. spec:
    6. limits:
    7. - default:
    8. memory: 50Gi
    9. cpu: 5
    10. defaultRequest:
    11. memory: 1Gi
    12. cpu: 1
    13. type: Container
    • default 即 limit 的值
    • defaultRequest 即 request 的值

    参考

    • 资源配额
    • 为命名空间配置默认的内存请求与限额
    • 在命名空间中配置默认的CPU请求与限额