纯IPv6 EKS集群下Istio Ambient模式能否直连IPv4端点?
我拥有一个纯IPv6的EKS集群,部署了带Sidecar代理容器的Istio服务网格。此前通过设置ISTIO_ENABLE_IPV4_OUTBOUND_LISTENER_FOR_IPV6_CLUSTERS = true,可使用curl -v -4 https://sts.eu-central-1.amazonaws.com直接连接IPv4端点。近期将Istio升级至1.23.2并切换为Ambient模式后,执行该curl命令返回如下连接重置错误:
* Host sts.eu-central-1.amazonaws.com:443 was resolved. * IPv6: (none) * IPv4: 54.239.54.197 * Trying 54.239.54.197:443... * Connected to sts.eu-central-1.amazonaws.com (54.239.54.197) port 443 * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * Recv failure: Connection reset by peer * OpenSSL SSL_connect: Connection reset by peer in connection to sts.eu-central-1.amazonaws.com:443 * closing connection #0 curl: (35) Recv failure: Connection reset by peer
请问在此Istio Ambient模式下,是否仍可直接连接IPv4端点?
Istio Ambient模式下支持IPv6集群直接访问IPv4端点,但原Sidecar模式依赖的ISTIO_ENABLE_IPV4_OUTBOUND_LISTENER_FOR_IPV6_CLUSTERS配置在Ambient模式中不再生效,需通过以下适配配置解决当前连接重置问题:
启用全局IPv4出站支持
在Istio MeshConfig中添加IPv4启用配置:meshConfig: ipv4: enabled: true该配置会让Ambient模式的Ztunnel代理开启IPv4流量转发能力。
确认Ztunnel运行参数
检查Ztunnel Pod是否加载了IPv4启用的环境变量:kubectl exec -n istio-system <ztunnel-pod-name> -- printenv IPV4_ENABLED正常输出应为
true,若未设置,需重新部署Istio并确保MeshConfig配置生效。排查网络策略限制
检查应用命名空间及istio-system命名空间的NetworkPolicy,确保未阻止到IPv4地址段的出站流量。验证DNS解析有效性
在应用Pod内执行DNS解析命令,确认能获取到目标IPv4地址:nslookup sts.eu-central-1.amazonaws.com -type=A查看Ztunnel日志定位错误
若以上配置均无问题,查看Ztunnel日志排查流量转发异常:kubectl logs -n istio-system <ztunnel-pod-name> -c ztunnel
内容的提问来源于stack exchange,提问作者adamo89

