设置命名空间资源限制
更新时间:2021-02-23
命名空间资源限制
当多个用户或多个团队共用一个 CCE 集群时,需要为每个用户或团队所在的租户设置资源限制以防止某个用户或团队占用集群过多资源。集群管理员可以通过 Resource Quota 为每个租户设置资源限额。
Resource Quota支持限制的资源
- 计算资源限制
资源名称 | 描述 |
---|---|
cpu | 本命名空间下,所有不处于 terminal 状态的 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