阿里云上的启用IPVS的K8S集群,无法从Pod经外部访问自己的排障流水账。
问题描述:
阿里云上的托管版K8S集群(下面简称ACK),启用了IPVS
集群中有两个应用Foo和Bar,Bar使用Ingress暴露外网地址,bar.xxx.com
Foo应用无法访问 bar.xxx.com ,得到的错误是 Connection refused
初步排障
在集群外部测试
ping bar.xxx.com,能够ping通:
PING xxx.bar.com (): 56 data bytes
64 bytes from : icmp_seq=0 ttl=91 time=3.091 ms
64 bytes from : icmp_seq=1 ttl=91 time=3.212 ms
64 bytes from : icmp_seq=2 ttl=91 time=3.267 ms
注意:
解析得到的IP是ACK创建时自动创建的SLB实例的公网IP。
在集群内部测试
在K8S集群中启动一个临时Pod,nicolaka/netshoot
得到错误:curl: (7) Failed to connect to bar.xxx.com port 80: Connection refused
ping bar.xxx.com,能够ping通,得到结果
PING xxx.bar.com () 56(84) bytes of data.
64 bytes from nginx-ingress-lb.kube-system.svc.clus