更新时间:2024-07-02 GMT+08:00
工作负载网络异常时,如何定位排查?
排查思路
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
排查项一:容器+容器端口
在CCE控制台界面或者使用kubectl命令查找pod的IP,然后登录到集群内的节点或容器中,使用curl命令等方法手动调用接口,查看结果是否符合预期。
如果容器IP+端口不能访问,建议登录到业务容器内使用“127.0.0.1+端口”进行排查。
常见问题:
- 容器端口配置错误(容器内未监听访问端口)。
- URL不存在(容器内无相关路径)。
- 服务异常(容器内的业务BUG)。
- 检查集群网络内核组件是否异常(容器隧道网络模型:openswitch内核组件;VPC网络模型:ipvlan内核组件)。
排查项二:节点IP+节点端口
只有发布为节点访问(NodePort)或负载均衡(LoadBalancer )的服务才能通过节点IP+节点端口进行访问。
- 节点访问(NodePort)类型:
节点的访问端口就是节点对外发布的端口。
- 负载均衡(LoadBalancer )类型:
负载均衡的节点端口通过“编辑YAML”可以查看。
如下图所示:
nodePort: 30637为节点对外暴露的端口。targetPort: 80为Pod对外暴露的端口。port: 123为服务对外暴露的端口,负载均衡类型的服务同时使用该端口配置ELB的监听器。
找到节点端口(nodePort)后,使用容器所在节点的IP地址+端口进行访问,并查看结果是否符合预期。
常见问题:
- 节点的入方向对业务端口未放通。
- 节点配置了自定义路由,并且配置错误。
- pod的label与service的label不匹配(kubectl或API创建)。
排查项三:负载均衡IP+端口
如果使用负载均衡IP+端口不能访问,但节点IP+端口可以访问。
请排查:
- 相关端口或URL的后端服务器组是否符合预期。
- 节点上的安全组是否对ELB暴露了相关的协议或端口。
- 四层ELB的健康检查是否开启(未开启的话,请开启)。
- 七层ELB的访问方式中使用的证书是否过期。
常见问题:
- 发布四层ELB时,如果客户在界面未开启健康检查,ELB可能会将流量转发到异常的节点。
- UDP协议的访问,需要放通节点的ICMP协议。
- pod的label与service的label不匹配(kubectl或API创建)。
排查项五:检查容器所在节点安全组是否放通
用户可单击服务列表中的“网络 > 虚拟私有云 VPC”,在网络控制台单击“访问控制 > 安全组”,找到CCE集群对应的安全组规则进行修改和加固。
请排查:
- 从集群外访问集群内负载时,来访者的IP地址、端口、协议需在集群安全组的入方向规则中开放。
- 集群内的工作负载访问外部时,访问的地址、端口、协议需在集群安全组的出方向规则中开放。
更多安全组配置信息请参见集群安全组规则配置。