
# 网络
#### 简介
通过阅读本章节用户可以了解：
- 如何为弹性CCI的pod配置默认使用的指定dns服务器。
- CCE集群pod与CCI集群中pod通过service互通的使用指导。
- 弹性CCI侧pod通过service发布。
 
#### 约束与限制
- 使用共享VPC的CCE集群不支持开启"网络互通"功能。
- 使用CCE集群中的Bursting插件对接CCI 2.0服务，支持配置独享型ELB的Ingress和Service。Bursting插件1.5.5以下版本不支持配置ELB类型的Service。
- 当前网络互通能力依赖sidecar容器的启动，如需使用以下功能，插件升级到1.5.28及以上版本：
  - 业务容器需要使用postStart功能。
  
  - 在初始化容器中使用网络互通能力，需要开启[初始化容器网络互通开关]。
   
- 开启网络互通能力、开启初始化容器网络互通开关等操作需等待相关组件就绪，再下发负载，否则会导致功能异常。
- 跨CCE和CCI实例Service网络互通只支持集群内访问（ClusterIP）类型。
- 跨CCE和CCI实例，在对接LoadBalancer类型的Service或Ingress时：
  - 禁止指定健康检查端口，在CCE集群下，由于CCI的容器与CCE的容器在ELB注册的后端使用端口不一致，指定健康检查端口会导致部分后端健康检查异常。
  
  - 跨集群使用Service对接同一个ELB的监听器时，需确认健康检查方式，避免服务访问异常。
  
  - 在CCE标准集群下对接共享型LoadBalancer类型的Service时，需要放通node安全组下100.125.0.0/16网段的容器端口。
   
- 负载的restartPolicy配置会同时作用于Sidecar容器。若Pod的restartPolicy未设置为Always（OnFailure 或 Never），或Pod属于 Job/CronJob ，当Sidecar容器异常退出时，系统不会自动重启该容器。此情况可能影响网络互通，请通过检查Pod Condition确认 Sidecar是否正常运行。
 
#### 配置默认使用的指定dns服务器
**操作场景**
在某些场景中，用户想要弹性CCI的Pod可以使用指定的dns服务器地址。bursting插件提供配置指定的dns服务器地址的能力，无需在每个Pod上都配置dnsConfig，从而降低用户网络运维成本。
**操作步骤**
1. 登录CCE集群节点，编辑bursting负载的yaml。
   ```
   kubectl edit deploy cceaddon-virtual-kubelet-virtual-kubelet -nkube-system
   ```
   

2. 启动参数中增加--cluster-dns=x.x.x.x参数，配置为dns服务器地址。
3. 保存配置修改，等待virtual-kubelet负载重启。 ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000001775511156.png)
   
4. 验证方式。
   通过exec进入弹性到CCI运行中的容器内，查看/etc/resolv.conf中首选nameserver是否为cluster-dns配置的地址。
   表1使用场景约束限制 
   | 使用场景             | 约束限制                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | 修改配置前存在弹性CCI的pod | - 修改配置后新创建弹性CCI的pod生效。  - 修改配置前的弹性的pod需要重建之后才生效。                                                            |
   | cluster-dns配置上限  | - k8s dnsConfig最多只支持配置3个nameservers。  - 保证cluster-dns配置的nameserver数量与Pod的spec.dnsConfig配置的nameserver数量之和不超过3个。   |
      
   
#### CCE集群pod与CCI集群中pod通过service互通的使用指导
1. 安装插件，勾选"网络互通"功能。 ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000002010535336.png)
   安装成功后租户账号下会自动创建负载均衡器，可以通过网络控制台进行查看。
   
2. 创建弹性CCI侧pod，并配置service发布。
   - 为了方便验证，镜像选择暴露容器80端口的nginx。
   
   - 为工作负载配置service。推荐自动创建新的负载均衡器，以避免和插件自动创建的elb产生冲突。 ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000001866957548.png)
     
    
3. 通过CCE集群控制台，获取该负载的访问方式。
4. 创建CCE侧pod，并配置service发布。方法请参考步骤[2]，不选择弹性CCI标签。
5. 验证网络互访。 创建弹性CCI的工作负载，镜像选择含有curl命令的镜像，如centos。
   通过CCI侧进入该容器，执行图中命令，观测CCI访问CCE service网络打通。
   图1访问CCE pod的service   
   ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000001913195625.png) 
6. 同理创建CCE侧pod，镜像选择含有curl命令的镜像，如centos。执行相同的命令。观测CCE访问CCI service网络打通。
   图2访问CCI pod的service   
   ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000002210206745.png) 
 
 #### 初始化容器网络互通开关配置
初始化容器网络互通开关默认关闭，若要使用，请在开启网络互通功能开关的前提下，根据以下操作进行配置。
1. 登录CCE控制台。
2. 选择CCE集群，单击进入CCE集群总览页面。
3. 在导航栏左侧单击"插件中心"，进入插件中心首页。
4. 选择"CCE 突发弹性引擎 (对接 CCI)"插件，单击"编辑"。
   图3CCE 突发弹性引擎 (对接 CCI)插件   
   ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000002170125806.png) 
5. 在"网络互通（可选）"开启的条件下，单击"编辑YAML"。
   图4编辑插件   
   ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000002170125786.png) 
6. 将"set_proxy_as_first_initcontainer"配置为true。
   图5修改参数   
   ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000002173450996.png) 
7. 在"CCE 突发弹性引擎 (对接 CCI)"插件的实例列表中查看实例名称为"bursting-cceaddon-virtual-kubelet-virtual-kubelet-xxx"、"cceaddon-virtual-kubelet-virtual-kubelet-xxx"状态显示为"运行中"，表示重新部署完毕，该功能可正常运行。
   图6查看插件部署状态   
   ![](https://support.huaweicloud.com/usermanual-cci/zh-cn_image_0000002209974093.png) 
 
