应用场景:
当前有个TCP的后台服务镜像部署在K8s集群内,服务通过Service-NodePort方式暴露端口给集群外部的应用访问,外部应用通过Socket与这个后台服务连接。
应用问题:
后台服务需要记录访问的外部应用IP地址,但是k8s会将外部访问通过endpoint转发,所以每次获取都是endpoint的地址而非应用真实IP,是否有方法在不修改应用访问报文的基础上(例如外部应用发送报文中添加IP字段)实现获取外部应用真实IP的目的?
心路历程:
在提问之前也做过一些测试:
k8s提供一个externalTrafficPolicy=Local的配置选项,但是注意,仅限于宿主机:nodeport去访问,如果访问到非宿主机上就不会进行snat转发,tcp包将被丢弃