kubernets中pod服务如何验证请求方的ip?

我有这样一个功能,比如我A,B双方都部署了我的服务,A和B会填写对方的ip信息,之后在A方请求B方某个服务接口时,B方会验证请求是否是A方发起的,所以B方在接口中验证request.ip

但是我碰到了一个问题,是和我的部署方案相联系的,如下图所示:

  1. 没有问题的方案:当我使用docker-compose方式部署时,A,B双方在自己机器上部署自己的服务,每一方的服务都是一个容器,A方请求B方,B方正常会获取到A方服务器的真实IP,因为请求时从A方服务器发送到B方的
  2. 有问题的方案:当我使用k8s进行部署时,A,B双方都有一个k8s集群,在A方服务的pod可能被放到了k8s-1-node-1上,B方服务的pod可能被放到了k8s-2-node-1上。正常A方请求B方的master节点的ip,服务都是好使的,B方都会响应。但是对于B方验证A方的request.ip这个功能来说,就发生了变化,A方请求B方的master节点ip,请求是A方的master节点发送过来的,但是B方会把这个请求通过内网转给pod所在的node节点上,那么请求的IP就在B上改变了,变成了B的master内网请求node节点上pod的内网ip,我就无法验证这个ip是否是A方发送过来的。所以我特别想知道,有没有什么方式,在A请求B的master节点之后,B的node节点上pod还是能获取到A的ip?

image.png

阅读 1.2k
1 个回答

你能方法后换个校验机制,比如使用签名算法之类的。你使用ip肯定是不行的。更何况你的业务环境是基于k8s的,那使用ip进行校验就更加不合理了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏