设置配额
概述
ResourceQuota
对象定义的资源配额,用于限制每个项目的资源消耗。。它可以通过类型限制项目中可以创建的对象的数量,以及项目中可能消耗的计算资源和存储的总量。
@提示:更多计算资源信息可参见开发者指南(Developer Guide)
配额资源管理
以下描述可由配额管理的一组计算资源和对象类型。
@提示:如果status.phase in (Failed, Succeeded)为真,则pod处于终端状态。
表1.由quota管理的计算资源
资源名称 | 描述 |
---|---|
cpu |
非终端状态下所有pod的CPU请求总和不能超过此值。cpu 和requests.cpu 值相同,并且可以互换使用。 |
memory |
非终端状态下所有pod的内存请求总和不能超过此值。memory 和requests.memory 值相同,并且可以互换使用。 |
requests.cpu |
非终端状态下所有pod的CPU请求总和不能超过此值。cpu 和requests.cpu 值相同,并且可以互换使用。 |
requests.memory |
非终端状态下所有pod的内存请求总和不能超过此值。memory和requests.memory值相同,并且可以互换使用。 |
requests.storage |
所有持久性卷声明中的存储请求的总和不能超过此值。storage 和requests.storage 值相同,并且可以互换使用 |
limits.cpu |
非终端状态下所有端口的CPU限制的总和不能超过此值。 |
limits.memory |
非终端状态下所有pod的内存限制之和不能超过此值。 |
表2.Quota管理的对象数量
资源名称 | 描述 |
---|---|
pods |
在的非终端状态的项目中可以存在的pod的总数 |
replicationcontrollers |
项目中可存在的复制控制器的总数 |
resourcequotas |
项目中可以存在的资源配额总数 |
services |
项目中可以存在的服务总数 |
secrets |
项目中可以存在的秘钥总数 |
configmaps |
项目中可存在的ConfigMap 对象总数 |
persistentvolumeclaims |
项目中可能存在的持久性卷的总数。 |
openshift.io/imagestreams |
项目中可以存在image stream的总数。 |
Quota 范围
每个配额可以有一组关联的范围。配额只能衡量资源的使用情况,如果它与枚举的范围相交。
将配额添加到配额限制可以应用该配额的资源集。指定允许的集合之外的资源会导致验证错误。
范围 | 描述 |
---|---|
Terminating | 匹配podsspec.activeDeadlineSeconds >= 0 |
NotTerminating | 匹配podsspec.activeDeadlineSeconds为nil |
BestEffort | 匹配任一cpu或memory最佳服务质量的pods |
NotBestEffort | 匹配没有提供cpu 和memory 最佳服务质量的pods |
BestEffort限制资源的范围:
pods
Terminating,NotTerminating或NotBestEffort范围限制quota可跟踪以下资源:
pods
memory
requests.memory
limits.memory
cpu
requests.cpu
limits.cpu
Quota执行
在首次创建项目的资源配额后,该项目将限制创建任何可能违反配额约束的新资源的能力,直到计算更新的使用情况统计信息为止。
创建配额并更新使用统计信息后,项目将接受新内容的创建。当您创建或修改资源时,在创建或修改资源的请求时,您的配额使用将立即增加。
当您删除资源时,在下次完全重新计算项目的配额统计信息时,您的配额使用量会减少。可配置的时间量决定将配额使用统计信息减少到目前观察到的系统值所需的时间。
如果项目修改超过配额使用限制,则服务器将拒绝该操作,并向用户返回解释违反配额约束的相应错误消息,以及系统当前观察到的使用情况统计信息。
请求与限制
在分配计算资源时,每个容器指定请求和CPU和内存的限制值。配额可以限制任何这些值。
如果配额具有requests.cpu
或requests.memory
,则要求每个传入容器对这些资源作出明确的请求。如果配额具有limits.cpu
或limits.memory
,则要求每个传入容器为这些资源指定明确的限制。
资源配额定义例子
示例1.object-counts.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: core-object-counts
spec:
hard:
configmaps: "10" 【1】 persistentvolumeclaims: "4" 【2】 replicationcontrollers: "20" 【3】 secrets: "10" 【4】 services: "10" 【5】
【1】:在一个项目中可存在的ConfigMap
对象总数
【2】:项目中可以存在的persistent volume claims(PVC)总数
【3】:项目中可存在的复制控制器总数
【4】:项目中可以存在的秘钥的总数
【5】:项目中可以存在的服务的总数
示例2.openshift-object-counts.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: openshift-object-counts
spec:
hard:
openshift.io/imagestreams: "10"【1】
【1】项目中可存在的image streams的总数
示例3.compute-resources.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
pods: "4" 【1】 requests.cpu: "1" 【2】 requests.memory: 1Gi 【3】 limits.cpu: "2" 【4】 limits.memory: 2Gi【5】
【1】在项目中可以存在的非终端状态中的pod的总数
【2】在非终端状态的所有pod中,CPU请求的总和不能超过1个核心
【3】在非终端状态的所有pod中,内存请求的总和不能超过1Gi
【4】在非终端状态的所有pod中,CPU限制的总和不能超过2个内核
【5】在非终端状态的所有pod中,内存限制的总和不能超过2Gi
Example 4.besteffort.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: besteffort
spec:
hard:
pods: "1" 【1】
scopes:
- BestEffort【2】
【1】在非终端状态下,可以存在于项目中的BestEffort服务质量的总数
【2】将配额限制为仅适用于内存或CPU的BestEffort服务质量的pod
创建配额
要创建配额,请首先在文件中定义您的规范的配额,例如“资源配额定义例子”中所示。然后,使用该文件创建应用到项目:
$ oc create -f <resource_quota_definition> [-n <project_name>]
例如:
$ oc create -f resource-quota.json -n demoproject
查看配额
您可以通过在Web控制台中导航到项目的“配额”页面来查看与项目配额中定义的任何硬限制相关的使用情况统计信息。
您还可以使用CLI查看配额详细信息:
首先,获取项目中定义的配额列表。例如,对于一个名为demoproject的项目:
$ oc get quota -n demoproject NAME AGE besteffort 11m compute-resources 2m core-object-counts 29m
然后,描述您感兴趣的配额,例如核心对象计数配额:
$ oc describe quota core-object-counts -n demoproject Name: core-object-counts Namespace: demoproject Resource Used Hard -------- ---- ---- configmaps 3 10 persistentvolumeclaims 0 4 replicationcontrollers 3 20 secrets 9 10 services 2 10
配置配额同步周期
当一组资源被删除时,资源的同步时间帧由/etc/origin/master/master-config.yaml文件中的resource-quota-sync-period
设置决定。
配额使用恢复之前,用户在尝试重用资源时可能会遇到问题。您可以将resource-quota-sync-period
设置更改为使资源集在所需的时间(以秒为单位)重新生成,资源将再次可用:
kubernetesMasterConfig:
apiLevels:
- v1beta3
- v1
apiServerArguments: null
controllerArguments:
resource-quota-sync-period:
- "10s
进行任何更改后,重启master服务以应用它们。
调整再生时间有助于在使用自动化时创建资源并确定资源使用。
@提示:该resource-quota-sync-period设置旨在平衡系统性能。降低同步时间可能会导致主机负载过重。
在部署配置中计算配额
如果为您的项目定义了配额,请参阅部署资源以了解有关任何部署配置的注意事项。