
# CCE Turbo配置容器网卡动态预热
在云原生网络2.0下，每个Pod都会分配（申请并绑定）一张弹性网卡或辅助弹性网卡（统一称为：容器网卡）。由于容器场景下Pod的极速弹性与慢速的容器网卡创建绑定的差异，严重影响了大规模批创场景下的容器启动速度。因此，云原生网络2.0提供了容器网卡动态预热的能力，在尽可能提高IP的资源利用率的前提下，尽可能加快Pod的启动速度。
#### 基本概念
#### 弹性网卡概念
弹性网卡是ECS提供的一种资源，根据网卡的主次关系可分为主弹性网卡和扩展弹性网卡。
- 主弹性网卡：在创建云服务器实例时，随实例默认创建的弹性网卡称作主弹性网卡。主弹性网卡无法与实例进行解绑。
- 扩展弹性网卡：您可以创建扩展弹性网卡，将其附加到云服务器实例上，您也可以将其从实例上进行解绑。每台实例可附加的扩展弹性网卡数量由实例规格决定。
 
#### 辅助弹性网卡概念
辅助弹性网卡是一种基于弹性网卡的衍生资源，通过VLAN子接口挂载在弹性网卡上。单个云服务器实例支持绑定的弹性网卡数量有限，当因业务需要绑定超过弹性网卡上限的网卡时，可以通过为弹性网卡挂载辅助弹性网卡实现。
图1辅助弹性网卡挂载示意图   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002353137681.png "点击放大")
#### CCE Turbo集群中的容器网卡
在CCE Turbo集群中，Pod依赖弹性网卡（ENI）/辅助弹性网卡（Sub-ENI）对外进行网络通信。
- 裸金属节点上运行的Pod：使用弹性网卡对外进行网络通信。
- ECS节点上运行的Pod：使用辅助弹性网卡对外进行网络通信，辅助弹性网卡通过VLAN子接口挂载在ECS的弹性网卡上。
图2云原生网络2.0   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001352539924.png "点击放大")
#### 约束与限制
- CCE Turbo的1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0及以上版本支持用户配置容器网卡动态预热；支持集群级别的全局配置以及节点池级别的差异化配置，暂不支持非节点池下的节点差异化配置。
- CCE Turbo的1.19.16-r2、1.21.5-r0、1.23.3-r0到1.19.16-r4、1.21.7-r0、1.23.5-r0之间的集群版本只支持节点最少绑定容器网卡数(nic-minimum-target)和节点动态预热容器网卡数(nic-warm-target)两个参数配置，且不支持节点池级别的差异化配置。
- 请通过console页面或API修改容器网卡动态预热参数配置，请勿直接后台修改节点annotations上对应的容器网卡动态预热参数，集群升级后，后台直接修改的annotations会被覆盖为原始的值。
- CCE Turbo的1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0之前的集群版本支持用户配置容器网卡高低水位预热，如果用户配置了全局的容器网卡高低水位预热。集群升级后，原始的高低水位预热参数配置会自动转换为容器网卡动态预热参数配置；但如果用户要通过console页面进一步修改容器网卡动态预热参数，需要先通过**集群的配置管理console页面**把原始的高低水位预热配置修改为（0:0）。
- CCE Turbo节点池的节点类型为裸金属服务器时，1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0之前的集群版本默认采用的是容器网卡高低水位预热（默认值0.3:0.6）。集群升级后，原始的高低水位预热依然生效，建议用户通过**节点池的配置管理console页面**把高低水位预热参数配置转换为容器网卡动态预热参数配置并一并删除高低水位预热配置，以启用最新的容器网卡动态预热的能力。
- CCE Turbo节点池的节点类型为非裸金属服务器时，1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0之前的集群版本默认采用的是容器网卡高低水位预热（默认值0.3:0.6）。集群升级后，原始的高低水位预热依然生效，如果用户想启用集群级别的全局配置，需要后台删除该节点的annotation（node.yangtse.io/eni-warm-policy），以启用集群级别配置的容器网卡动态预热的能力。
 
#### 原理说明
CCE Turbo的容器网卡动态预热提供了4个相关的容器网卡动态预热参数，您可以根据业务规划，合理设置集群的配置管理或节点池的配置管理中的容器网卡动态预热参数（其中节点池的容器网卡动态预热配置优先级高于集群的容器网卡动态预热配置）。
图3节点容器网卡动态预热策略   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002391974924.png "点击放大")
表1容器网卡动态预热参数 
| 容器网卡动态预热参数                              | 默认值 | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 配置建议                                                           |
|:---|:---|:---|:---|
| 节点最少绑定容器网卡数(nic-minimum-target)         | 10  | 保障节点最少有多少张容器网卡绑定在节点上，支持数值跟百分比两种配置方式。 - 数值配置：参数值需为0到65535的整数。例如10，表示节点最少有10张容器网卡绑定在节点上。当超过节点的容器网卡配额时，后台取值为节点的容器网卡配额。  - 百分比配置：参数值范围为1%-100%。例如10%，如果节点容器网卡配额128，表示节点最少有12张（向下取整）容器网卡绑定在节点上。   建议nic-minimum-target与nic-maximum-target为同类型的配置方式（同采用数值配置或同采用百分比配置）。                                                                                                                                                                                                      | 建议配置为大部分节点平时日常运行的Pod数。                                         |
| 节点预热容器网卡上限检查值(nic-maximum-target)       | 0   | 当节点绑定的容器网卡数超过节点预热容器网卡上限检查值(nic-maximum-target)，不再主动预热容器网卡。 当该参数大于等于节点最少绑定容器网卡数(nic-minimum-target)时，则开启预热容器网卡上限值检查；反之，则关闭预热容器网卡上限值检查。支持数值跟百分比两种配置方式。 - 数值配置：参数值需为0到65535的整数，0表示关闭预热容器网卡上限值检查。当超过节点的容器网卡配额时，后台取值为节点的容器网卡配额。  - 百分比配置：参数值范围为1%-100%。例如50%，如果节点容器网卡配额128，表示节点预热容器网卡上限检查值64（向下取整）。   建议nic-minimum-target与nic-maximum-target为同类型的配置方式（同采用数值配置或同采用百分比配置）。 | 建议配置为大部分节点平时最多运行的Pod数。                                         |
| 节点动态预热容器网卡数(nic-warm-target)            | 2   | 表示节点网络接口（NIC）预热的目标值，即在节点启动时预先分配的网络接口数量。 当"节点动态预热容器网卡数(nic-warm-target) + 节点当前绑定的容器网卡数"大于节点预热容器网卡上限检查值(nic-maximum-target) 时，系统只会预热nic-maximum-target与节点当前绑定的容器网卡数的差值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 建议配置为大部分节点日常10s内会瞬时弹性扩容的Pod数。                                  |
| 节点预热容器网卡回收阈值(nic-max-above-warm-target) | 2   | 只有当"节点上空闲的容器网卡数 - 节点动态预热容器网卡数(nic-warm-target) "大于此阈值时，将会触发预热容器网卡的解绑回收。只支持数值配置。 - 调大此值会减慢空闲容器网卡的回收，加快Pod的启动速度，但会降低IP地址的利用率，特别是在IP地址紧张的场景，**请谨慎调大**。  - 调小此值会加快空闲容器网卡的回收，提高IP地址的利用率，但在瞬时大量Pod激增的场景，部分Pod启动会稍微变慢。                                                                                                                                                                                                                                                             | 建议配置为大部分节点日常在分钟级时间范围内会频繁弹性扩容缩容的Pod数 - 大部分节点日常10s内会瞬时弹性扩容的Pod数。 |
   
 #### 配置示例
| 级别    | 用户业务场景                                                                                                                                                                                                                                                                                                                        | 配置示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| 集群级别  | 集群中所有节点采用c7.4xlarge.2机型（辅助弹性网卡配额128） 集群下大部分节点平时日常运行20个Pod左右 集群下大部分节点最多运行60个Pod 集群下大部分节点日常10s内会瞬时弹性扩容10个Pod 集群下大部分节点日常在分钟级时间范围内会频繁弹性扩容缩容15个Pod                  | 集群级别的全局配置： - nic-minimum-target: 20  - nic-maximum-target: 60  - nic-warm-target: 10  - nic-max-above-warm-target: 5             |
| 节点池级别 | 集群中用户新创建了一个使用大规格机型c7.8xlarge.2的节点池（辅助弹性网卡配额256） 节点池下大部分节点平时日常运行100个Pod左右 节点池下大部分节点最多运行128个Pod 节点池下大部分节点日常在10s内会瞬时弹性扩容10个Pod 节点池下大部分节点日常在分钟级时间范围内会频繁弹性扩容缩容12个Pod | 节点池级别的差异化配置： - nic-minimum-target: 100  - nic-maximum-target: 120  - nic-warm-target: 10  - nic-max-above-warm-target: 2   |
   
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
使用HostNetwork的Pod不计入Pod数中。
#### 集群级别的全局配置
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，在左侧导航栏中选择"集群管理"。
2. 单击集群后的![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001831342293.png "点击放大")，选择"配置管理"。
   
   图4配置管理   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001831342017.png "点击放大")
   
   
3. 在侧边栏滑出的"配置管理"窗口中，选择网络组件配置，参数值请参见[配置示例]。
   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001799600592.png "点击放大")
   
   
4. 配置完后单击"确定"，等待10s左右即可生效。
 
#### 节点池级别的差异化配置
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)。
2. 进入集群，在左侧选择"节点管理"，在右侧选择"节点池"页签。
3. 单击节点池名称后的"配置管理"。
4. 在侧边栏滑出的"配置管理"窗口中，选择"网络组件配置"，并开启节点池网卡预热参数配置开关，参数值请参见[配置示例]。
   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001784589798.png "点击放大")
   
   
5. 配置完后单击"确定"，等待10s左右即可生效。
 
