错误信息:502,bad gateway
排查
1.网络服务502,放弃走apisixroute地址转发,直接访问pod的service
错误信息Failed to connect to fd00::52f4 port 80: Connection refused
说明不是apisixroute的问题
2.进入pod,curl的方式访问localhost服务,发现服务正常
3.pod正常运行,可以ping通pod暴露的地址
说明pod网络也是ok,正常运行
3.发现pod目前是ipv6单栈的方式,修改成ipv4单栈的方式,可以正常访问到服务,修改方式,在service的yml文件中spec维度下修改ip类型
spec:
targetPort: cmc-web-port
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv4
说明服务正常的,但是ipv6的方式访问不到,但是ping ipv6也可以ping通
4.最后发现是因为前端走了Nginx.conf的configmap,Nginx默认走的ipv4端口监听,ipv6监听需要额外配置。
server{
listen 80;
listen [::]:80; #ipv6的监听
}
所以用ipv6 的方式访问不到服务,因为服务没有监听ipv6的端口
这段配置跟后端不同,后端使用sprintboot的application.yml文件,虽然只配了一个端口监听,但是ipv4和ipv6的端口都监听到了,因为没有走nginx,直接访问了内置的tomcat端口(而tomcat默认的ipv4和ipv6都支持),所以后端服务只用ipv6是正常的,如果这块理解不对,希望大家指正