阿里云 pod 间不能通过 ingress 的域名 进行访问 解析
问题现象如图:
纠正
首先我们要纠正一下上面的图,使用 ingress 暴露服务的时候,结构图应该是下面的样子
问题分析
负载均衡(slb)的地址一般都是供集群外部使用的,它会被当作 service 的扩展 ip,被 iptables 转发。
默认,ingress 创建的 service 的 externalTrafficPolicy 属性 为 Local ,
所以 pod a 可以访问 pod c 是因为,正好 pod a 和 ingress 的 pod 在同一个 node 上面,所以 pod a 可以访问所有 ingress 服务
而 pod b 和 pod c 不在同一个 node 上面,故它的访问,会被 iptables 拒绝。
解决方法是:
将 ingress service 中的 externalTrafficPolicy 属性 设置 Cluster
参考:
关于 externalTrafficPolicy 属性意义,参考:k8s svc的externalTrafficPolicy属性 跨node不通
共 0 条评论