首页 新闻 会员 周边 捐助

Kubernetes NodePort Service 转发请求给 Pod 时的 IP 地址问题

0
悬赏园豆:30 [待解决问题]

pod 中部署的是 asp.net core 应用,客户端请求是这样转发的(没有走 ingress)

客户端 -> 阿里云负载均衡 -> nodeport service -> pod

阿里云负载均衡的健康检查地址配置的是网站首页地址,开始一切正常,后来给首页加了 IP 限流,限流代码中忽略了 IPv4 私网 IP 地址(白名单),但阿里云负载均衡的健康检查却失败了

后来跟踪了 pod 的对端(也就是 nodeport service)才发现是下面这样的 IP 地址

::ffff:192.168.2.71

原来在 nodeport service 与 pod 通信时, 竟然将 IPv4 地址转换为 IPv6 地址格式,完美地跳过了 IP 限流的白名单

请问 k8s 为什么要这么做?

问题补充:

这个问题应该与 CNI 使用 Cilium 有关

dudu的主页 dudu | 高人七级 | 园豆:24700
提问于:2025-06-16 13:28

pod 的健康检查也是这个 IPv6 地址格式

dudu 4个月前
< >
分享
所有回答(2)
0

::ffff:192.168.2.71 是一个ipv4 mapped 到 ipv6的地址, pod监听了ipv6, 所以socket从ipv4 mapped 到了ipv6. 或者流量转发的路径上有ipv6相关的配置?

czd890 | 园豆:14650 (专家六级) | 2025-06-16 15:26
0

本质是因为 Kubernetes 中 Pod 接收到的客户端 IP 被转成了 IPv4-mapped IPv6 地址 的形式,这其实并不是 Kubernetes刻意为之,而是网络协议栈(通常是 Node 上的 kube-proxy 或宿主机内核)在处理方式上的一个标准行为

忙忙碌碌但一无所获 | 园豆:219 (菜鸟二级) | 2025-06-20 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册