5.2. 跨越多个项目的资源配额
多项目配额由 ClusterResourceQuota 对象定义,允许在多个项目之间共享配额。对每个选定项目中使用的资源量进行合计,使用合计值来限制所有选定项目中的资源。
本指南介绍了集群管理员如何在多个项目间设置和管理资源配额。
5.2.1. 在创建配额过程中选择多个项目
在创建配额时,您可以根据注解选择和/或标签选择来同时选择多个项目。
流程
要根据注释选择项目,请运行以下命令:
$ oc create clusterquota for-user \ --project-annotation-selector openshift.io/requester=<user_name> \ --hard pods=10 \ --hard secrets=20
这会创建以下 ClusterResourceQuota 对象:
apiVersion: v1 kind: ClusterResourceQuota metadata: name: for-user spec: quota: 1 hard: pods: "10" secrets: "20" selector: annotations: 2 openshift.io/requester: <user_name> labels: null 3 status: namespaces: 4 - namespace: ns-one status: hard: pods: "10" secrets: "20" used: pods: "1" secrets: "9" total: 5 hard: pods: "10" secrets: "20" used: pods: "1" secrets: "9"
此多项目配额文档使用默认的项目请求端点控制
<user_name>
请求的所有项目。您需要有 10 个 Pod 和 20 个 secret 的限制。同样,若要根据标签选择项目,请运行以下命令:
$ oc create clusterresourcequota for-name \ 1 --project-label-selector=name=frontend \ 2 --hard=pods=10 --hard=secrets=20
这会创建以下 ClusterResourceQuota 对象定义:
apiVersion: v1 kind: ClusterResourceQuota metadata: creationTimestamp: null name: for-name spec: quota: hard: pods: "10" secrets: "20" selector: annotations: null labels: matchLabels: name: frontend
5.2.2. 查看适用的集群资源配额
项目管理员无法创建或修改多项目配额来限制自己的项目,但管理员可以查看应用到自己项目的多项目配额文档。项目管理员可以使用 AppliedClusterResourceQuota
资源进行此操作。
流程
要查看应用到某一项目的配额,请运行:
$ oc describe AppliedClusterResourceQuota
例如:
Name: for-user Namespace: <none> Created: 19 hours ago Labels: <none> Annotations: <none> Label Selector: <null> AnnotationSelector: map[openshift.io/requester:<user-name>] Resource Used Hard -------- ---- ---- pods 1 10 secrets 9 20
5.2.3. 选择粒度
由于在声明配额分配时会考虑锁定,因此通过多项目配额选择的活跃项目数量是一个重要因素。如果在单个多项目配额下选择超过 100 个项目,这可能会给这些项目中的 API 服务器响应造成不利影响。