
# 设置容器规格
#### 操作场景
在创建工作负载时为添加的容器设置资源限制，可以对工作负载中每个实例所用的CPU配额、内存配额进行申请和限制。
#### 配置含义
在CPU配额和内存配额设置中，申请值与限制值的含义如下：
- 申请值用于预分配资源，当集群中的节点没有申请值所要求的资源数量时，容器会创建失败。
- 限制值用于设置容器使用资源的最大上限，避免异常情况下节点资源消耗过多，避免极端场景下因节点资源耗尽导致已运行的容器业务被驱逐。
![](https://support.huaweicloud.com/usermanual-ucs/public_sys-resources/note_3.0-zh-cn.png)
创建工作负载时，建议设置CPU和内存的资源上下限。同一个节点上部署的工作负载，对于未设置资源上下限的工作负载，如果其异常资源泄露会导致其它工作负载分配不到资源而异常。未设置资源上下限的工作负载，工作负载监控信息也会不准确。
#### 配置说明
- CPU配额：
  表1CPU配额说明 
  | 参数    | 说明                                                                     |
  |:---|:---|
  | CPU申请 | 容器使用的最小CPU需求，作为容器调度时资源分配的判断依赖。只有当节点上可分配CPU总量 ≥ 容器CPU申请数时，才允许将容器调度到该节点。 |
  | CPU限制 | 容器能使用的CPU最大值。                                                          |
     
  **建议配置方法**：
  节点的实际可用分配CPU量 ≥ 当前实例所有容器CPU限制值之和 ≥ 当前实例所有容器CPU申请值之和，节点的实际可用分配CPU量请在"资源管理 \> 节点管理"中对应节点的"可分配资源"列下查看"CPU: \*\* Core"。
  
- 内存配额：
  表2内存配额说明 
  | 参数   | 说明                                                                  |
  |:---|:---|
  | 内存申请 | 容器使用的最小内存需求，作为容器调度时资源分配的判断依赖。只有当节点上可分配内存总量 ≥ 容器内存申请数时，才允许将容器调度到该节点。 |
  | 内存限制 | 容器能使用的内存最大值。当内存使用率超出设置的内存限制值时，该实例可能会被重启进而影响工作负载的正常使用。               |
     
  **建议配置方法**：
  节点的实际可用分配内存量 ≥ 当前节点所有容器内存限制值之和 ≥ 当前节点所有容器内存申请值之和，节点的实际可用分配内存量请在"资源管理 \> 节点管理"中对应节点的"可分配资源"列下查看"内存: \*\* GiB"。
  
![](https://support.huaweicloud.com/usermanual-ucs/public_sys-resources/note_3.0-zh-cn.png)
**可分配资源：**可分配量按照实例请求值(request)计算，表示实例在该节点上可请求的资源上限，不代表节点实际可用资源。 计算公式为：
- 可分配CPU = CPU总量 - 所有实例的CPU请求值 - 其他资源CPU预留值
- 可分配内存 = 内存总量 - 所有实例的内存请求值 - 其他资源内存预留值
 
#### 使用示例
以集群包含一个资源为4Core 8GB的节点为例，已经部署一个包含两个实例的工作负载到该集群上，并设置两个实例（实例1，实例2）的资源为{CPU申请，CPU限制，内存申请，内存限制}={1Core，2Core，2GB，2GB}。
那么节点上CPU和内存的资源使用情况如下：
- 节点CPU可分配量=4Core-（实例1申请的1Core+实例2申请的1Core）=2Core
- 节点内存可分配量=8GB-（实例1申请的2GB+实例2申请的2GB）=4GB
因此节点还剩余2Core 4GB的资源可供下一个新增的实例使用。
