
# 容器网络带宽限制的配置建议
#### 应用场景
同一个节点上的容器会共用主机网络带宽，对容器的网络带宽进行限制，可以有效避免容器之间相互干扰，提升容器间的网络稳定性。
#### 约束与限制
Pod带宽限制功能规格如下：
| 功能规格        | 容器隧道网络模型  | VPC网络模型        | 云原生网络2.0模型                                                                                                                                                                                                                                                                                                                                                                                                     | VPC网络模型+DataPlane V2                                                 | 云原生网络2.0模型+DataPlane V2 |
|:---|:---|:---|:---|:---|:---|
| 支持的集群版本     | 所有集群版本均支持 | v1.19.10以上集群版本 | v1.19.10以上集群版本                                                                                                                                                                                                                                                                                                                                                                                                 | v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0及以上集群版本  | v1.34.3-r10及以上集群版本      |
| Egress带宽限制  | 支持        | 支持             | 支持                                                                                                                                                                                                                                                                                                                                                                                                             | 支持                                                                   | 支持                      |
| Ingress带宽限制 | 支持        | 支持             | 支持                                                                                                                                                                                                                                                                                                                                                                                                             | v1.28.15-r80、v1.29.15-r40、v1.30.14-r0、v1.32.9-r0、v1.33.7-r0及以上集群版本支持 | 支持                      |
| 带宽限制不支持的场景  | 无         | 无              | - Pod访问100.125.0.0/16等云服务网段地址  - Pod健康检查   | 本节点Pod间互访                                                            | 无                       |
| 带宽限制取值范围    | 仅支持单位M或G的限速配置，如100M，1G；最小取值1M，v1.28.15-r70、v1.29.15-r30、v1.30.14-r30、v1.31.10-r30、v1.32.6-r30、v1.33.5-r20、v1.34.1-r0以下版本的集群中，最大取值4.29G。 v1.28.15-r70、v1.29.15-r30、v1.30.14-r30、v1.31.10-r30、v1.32.6-r30、v1.33.5-r20、v1.34.1-r0及以上版本的集群中，最小取值1k，最大取值1P。                                                                                                             ||| 最小取值1k，最大取值1P                                                        | 最小取值1k，最大取值1P           |
   
- 只有VPC网络模型开启DataPlane V2网络加速后，将使用eBPF进行带宽限制，其他模式下将使用TBF Qdisc对带宽进行限制。
- Pod带宽限制仅支持普通容器，暂不支持安全容器。
- Pod带宽限制不支持HostNetwork类型Pod。
 
#### 操作步骤
1. 编辑工作负载yaml文件。 
   **vi deployment.yaml**
   根据需要在spec.template.metadata.**annotations** 中设置工作负载实例的网络带宽，限制容器的网络流量，网络带宽限制字段详解请参见[表1]。
   未设置默认不限制。
   示例如下：
   ```
   apiVersion: apps/v1 
   kind: Deployment 
   metadata: 
     name: nginx 
   spec: 
     replicas: 1 
     selector: 
       matchLabels: 
         app: nginx 
     strategy: 
       type: RollingUpdate 
     template: 
       metadata: 
         labels: 
           app: nginx 
         annotations:
          # 入方向网络带宽
           kubernetes.io/ingress-bandwidth: 100M
          # 出方向网络带宽
           kubernetes.io/egress-bandwidth: 1G
       spec: 
         containers: 
         - image: nginx  
           imagePullPolicy: Always 
           name: nginx 
         imagePullSecrets: 
         - name: default-secret
   ```
    表1工作负载实例网络带宽限制字段详解 
   | 字段名称                            | 字段说明                                                                                      | 必选/可选 |
   |:---|:---|:---|
   | kubernetes.io/ingress-bandwidth | 工作负载实例入方向网络带宽 取值范围：1k-1P，带宽如果设置大于32G，实际带宽将等于32G  | 可选    |
   | kubernetes.io/egress-bandwidth  | 工作负载实例出方向网络带宽 取值范围：1k-1P，带宽如果设置大于32G，实际带宽将等于32G | 可选    |
      
   
   
2. 创建工作负载。 
   **kubectl create -f deployment.yaml**
   命令行终端显示如下类似信息：
   ```
   deployment.apps/nginx created
   ```
   
   
 
