容器引擎CCE

    设置命名空间资源限制

    命名空间资源限制

    当多个用户或多个团队共用一个 CCE 集群时,需要为每个用户或团队所在的租户设置资源限制以防止某个用户或团队占用集群过多资源。集群管理员可以通过 Resource Quota 为每个租户设置资源限额。

    Resource Quota支持限制的资源

    • 计算资源限制
    资源名称 描述
    cpu 本命名空间下,所有不处于 ternimal 状态的 pod 资源的 CPU requests 总和不能超过该值
    limits.cpu 本命名空间下,所有不处于 terminal 状态的 pod 资源的 CPU limits 总和不能超过该值
    limits.memory 本命名空间下,所有不处于 terminal 状态的 pod 资源的 memory limits 总和不能超过该值
    memory 本命名空间下,所有不处于 terminal 状态的 pod 资源的 memory requests 总和不能超过该值
    requests.cpu 本命名空间下,所有不处于 terminal 状态的 pod 资源的 CPU requests 总和不能超过该值
    requests.memory 本命名空间下,所有不处于 terminal 状态的 pod 资源的 memory requests 总和不能超过该值
    • 存储资源限制
    资源名称 描述
    requests.storage 本命名空间下,所有的 persistent volume claims 的 storage requests 总和不能超过该值
    persistentvolumeclaims 本命名空间下存在的 persistent volume claims 的总数不能超过该值
    requests.ephemeral-storage 本命名空间下所有 pod 的本地临时存储的 storage requests 总和不能超过该值
    limits.ephemeral-storage 本命名空间下所有 pod 的本地临时存储的 storage limits 总和不能超过该值
    • API 资源数量限制
    资源名称 描述
    configmaps 本命名空间下能创建的 configmap 的数量
    secrets 本命名空间下能创建的 secrets 的数量
    persistentvolumeclaims 本命名空间下能创建的 persistent volume claims 的数量
    services 本命名空间下能创建的 services 数量
    services.loadbalancers 本命名空间下能创建的 load balancer 类型的 service 的数量
    services.nodeports 本命名空间下能创建的 node port 类型的 service 的数量
    pods 本命名空间下能存在的不处于 terminal 状态的 pod 数量
    deployments.apps 本命名空间下能创建的 deployment 的数量
    statefulsets.apps 本命名空间下能创建的 statefulset 的数量
    jobs.batch 本命名空间下能创建的 job 的数量
    cronjobs.batch 本命名空间下能创建的 cronjob 的数量

    示例

    本示例演示使用 ResourceQuota 限制命名空间中 PersistentVolumeClaim 的创建数量。

    (1)创建示例命名空间

    kubectl create namespace quota-example

    (2)创建 ResourceQuota

    将以下 yaml 保存为 quota-demo.yaml,并创建 ResourceQuota kubectl create -f quota-demo.yaml。该 ResourceQuota 会限制本命名空间只能创建一个 PersistentVolumeClaim。

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: quota-demo
      namespace: quota-example
    spec:
      hard:
        persistentvolumeclaims: "1"

    (3)验证 ResourceQuota 使用以下 yaml 创建一个 PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-quota-demo
      namespace: quota-example
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi

    查看 PersistentVolumeClaim 创建成功

     kubectl get persistentvolumeclaims --namespace=quota-example 

    结果如下。PersistentVolumeClaim 创建成功

    NAME                STATUS
    pvc-quota-demo      Pending

    尝试使用以下 yaml 创建第二个 PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-quota-demo-2
      namespace: quota-example
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 4Gi

    结果如下,可以看到,ResourceQuota 生效,限制了第二个 PersistentVolumeClaim 的创建。

    persistentvolumeclaims "pvc-quota-demo-2" is forbidden:
    exceeded quota: object-quota-demo, requested: persistentvolumeclaims=1,
    used: persistentvolumeclaims=1, limited: persistentvolumeclaims=1
    上一篇
    命名空间基本操作
    下一篇
    Helm管理