所有文档

          容器引擎 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管理