17.2. 由配额管理的资源
下文描述了可能通过配额管理的计算资源和对象类型的集合。
如果 status.phase in (Failed, Succeeded)
为 true,则 Pod 处于终端状态。
资源名称 | 描述 |
---|---|
|
非终端状态的所有 Pod 的 CPU 请求总和不能超过这个值。 |
|
非终端状态的所有 Pod 的内存请求总和不能超过这个值。 |
|
非终端状态的所有 Pod 的本地临时存储请求总和不能超过这个值。 |
|
非终端状态的所有 Pod 的 CPU 请求总和不能超过这个值。 |
|
非终端状态的所有 Pod 的内存请求总和不能超过这个值。 |
|
非终端状态的所有 Pod 的临时存储请求总和不能超过这个值。 |
| 非终端状态的所有 Pod 的 CPU 限值总和不能超过这个值。 |
| 非终端状态的所有 Pod 的内存限值总和不能超过这个值。 |
| 非终端状态的所有 Pod 的临时存储限值总和不能超过这个值。只有在您启用了临时存储技术预览时,此资源才可用。此功能默认为禁用。 |
资源名称 | 描述 |
---|---|
| 处于任何状态的所有持久性卷声明的存储请求总和不能超过这个值。 |
| 项目中可以存在的持久性卷声明的总数。 |
| 在处于任何状态且具有匹配存储类的所有持久性卷声明中,存储请求总和不能超过这个值。 |
| 项目中可以存在的具有匹配存储类的持久性卷声明的总数。 |
资源名称 | 描述 |
---|---|
| 项目中可以存在的处于非终端状态的 Pod 总数。 |
| 项目中可以存在的复制控制器的总数。 |
| 项目中可以存在的资源配额总数。 |
| 项目中可以存在的服务总数。 |
| 项目中可以存在的 secret 的总数。 |
|
项目中可以存在的 |
| 项目中可以存在的持久性卷声明的总数。 |
| 项目中可以存在的镜像流的总数。 |
您可以在创建配额时使用 count/<resource>.<group>
语法为这些标准命名空间资源类型配置对象数配额。
oc create quota <name> --hard=count/<resource>.<group>=<quota>
$ oc create quota <name> --hard=count/<resource>.<group>=<quota>
- 1
<resource>
是资源名称,<group>
则是 API 组(若适用)。使用oc api-resources
命令可以列出资源及其关联的 API 组。
17.2.1. 为扩展资源设置资源配额 复制链接链接已复制到粘贴板!
扩展资源不允许过量使用资源,因此您必须在配额中为相同扩展资源指定 requests
和 limits
。目前,扩展资源仅允许使用前缀 requests.
的配额项。以下是如何为 GPU 资源 nvidia.com/gpu
设置资源配额的示例场景。
流程
确定集群中某个节点中有多少 GPU 可用。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例中有 2 个 GPU 可用。
在命名空间
nvidia
中设置配额。本例中配额为1
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配额:
oc create -f gpu-quota.yaml
# oc create -f gpu-quota.yaml resourcequota/gpu-quota created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证命名空间是否设置了正确的配额:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行一个请求单个 GPU 的 Pod:
oc create pod gpu-pod.yaml
# oc create pod gpu-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Pod 是否在运行:
oc get pods
# oc get pods NAME READY STATUS RESTARTS AGE gpu-pod-s46h7 1/1 Running 0 1m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证配额计数器
Used
是否正确:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试在
nvidia
命名空间中创建第二个 GPU Pod。从技术上讲,该节点支持 2 个 GPU,因为它有 2 个 GPU:oc create -f gpu-pod.yaml
# oc create -f gpu-pod.yaml Error from server (Forbidden): error when creating "gpu-pod.yaml": pods "gpu-pod-f7z2w" is forbidden: exceeded quota: gpu-quota, requested: requests.nvidia.com/gpu=1, used: requests.nvidia.com/gpu=1, limited: requests.nvidia.com/gpu=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应该会显示此 Forbidden 错误消息,因为您有设为 1 个 GPU 的配额,但这一 Pod 试图分配第二个 GPU,而这超过了配额。