
# 工作负载网络异常时，如何定位排查？
#### 排查思路
以下排查思路根据原因的出现概率进行排序，建议您从高频率原因往低频率原因排查，从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题，请继续排查其他可能原因。
- [排查项一：容器+容器端口]
- [排查项二：节点IP+节点端口]
- [排查项三：负载均衡IP+服务端口（Port）]
- [排查项四：NAT网关+端口]
- [排查项五：检查容器所在节点安全组是否放通]
 
 #### 排查项一：容器+容器端口
在CCE控制台界面或者使用kubectl命令查找pod的IP，然后登录到集群内的节点或容器中，使用curl命令等方法手动调用接口，查看结果是否符合预期。
如果接口不能访问，建议登录到业务容器内使用"127.0.0.1+端口"进行排查。
**常见问题：**
1. 容器端口配置错误（容器内未监听访问端口）。
2. URL不存在（容器内无相关路径）。
3. 服务异常（容器内的业务BUG）。
4. 检查集群网络内核组件是否异常（容器隧道网络模型：openswitch内核组件；VPC网络模型：ipvlan内核组件；云原生网络2.0模型）。
 
 #### 排查项二：节点IP+节点端口
只有发布为节点访问（NodePort）或负载均衡（LoadBalancer ）的服务才能通过节点IP+节点端口进行访问。
- **节点访问（NodePort）类型：**
  节点安全组的访问端口就是节点对外发布的端口。
  
- **负载均衡（LoadBalancer ）类型：**
  负载均衡的节点端口通过"编辑YAML"可以查看。
  
如下图所示：
**nodePort: 30637** 为节点对外暴露的端口。**targetPort: 80** 为Pod对外暴露的端口。**port: 123**为服务对外暴露的端口，负载均衡类型的服务同时使用该端口配置ELB的监听器。
![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0196885789.png "点击放大")
找到节点端口（nodePort）后，使用容器所在节点的IP地址+节点端口（nodePort）进行访问，并查看结果是否符合预期。
**常见问题：**
1. 节点的入方向对节点端口（nodePort）未放通。
2. 节点配置了自定义路由，并且配置错误。
3. pod的label与service的selector不匹配（kubectl或API创建）。
 
 #### 排查项三：负载均衡IP+服务端口（Port）
如果使用负载均衡IP+服务端口（Port）不能访问，但节点IP+节点端口（nodePort）可以访问。
**请排查：**
- 相关端口或URL的后端服务器组是否符合预期。
- 节点上的安全组是否对ELB暴露了相关的协议或端口。
- 四层ELB的健康检查是否开启（未开启的话，请开启）。
- 七层ELB的访问方式中使用的证书是否过期。
**常见问题：**
1. 发布四层ELB时，如果客户在界面未开启健康检查，ELB可能会将流量转发到异常的节点。
2. UDP协议的访问，需要放通节点的ICMP协议。
3. pod的label与service的selector不匹配（kubectl或API创建）。
 
 #### 排查项四：NAT网关+端口
配置在NAT后端的服务器，通常不配置EIP，不然可能会出现网络丢包等异常。
 #### 排查项五：检查容器所在节点安全组是否放通
用户可单击服务列表中的"网络 \> 虚拟私有云 VPC"，在网络控制台单击"访问控制 \> 安全组"，找到CCE集群对应的安全组规则进行修改和加固。
- CCE集群： Node节点的安全组名称是：**{集群名}-cce-node-{随机字符}**。
  
- CCE Turbo集群： Node节点的安全组名称是：**{集群名}-cce-node-{随机字符}**。
  容器关联的安全组名称是：**{集群名}-cce-eni-{随机字符}**。
  
**请排查：**
- 从集群外访问集群内负载时，来访者的IP地址、端口、协议需在集群安全组的入方向规则中开放。
- 集群内的工作负载访问外部时，访问的地址、端口、协议需在集群安全组的出方向规则中开放。
更多安全组配置信息请参见[如何修改集群安全组规则配置](https://support.huaweicloud.com/cce_faq/cce_faq_00265.html)。
