如何从 redis 等外部系统里看到 k8s pod ip

2023-02-22 13:17:51 +08:00
 idblife
现在我们的应用运行在 k8s 的 pod 里,
redis 上看到的连接 ip 是 pod 的物理宿主机器 ip ,
通什么能够看到具体哪个应用或者 pod ip 在连接 redis ?
istio ?
2139 次点击
所在节点    Kubernetes
26 条回复
idblife
2023-02-22 21:46:48 +08:00
@bowser1701
悄悄地告诉你
我们 redis 没密码。。。
samwilson95
2023-02-22 23:04:13 +08:00
解决方案是有的,原理是 pod 访问外部 k8s 的时候,从 k8s node 出去会做 一次 snat ,转化成 node ip , 所以 redis 看到就是 node ip 了

如果想让 redis 那边看到 pod ip 的话,首先 出去,比如访问 redis 所在网段的时候 k8s 不要做 snat, 然后 保证 pod 的 IP 能路由到 redis 就可以

原理是这样,我们云上架构是找云厂商帮忙做的,具体怎么设置我就不清楚了,你搞明白可以分享一下,哈哈
julyclyde
2023-02-23 08:50:35 +08:00
@idblife redis 在集群外。那你抓包,人工识别一下访问了啥 KEY ,再反向推测到底是哪个 pod 吧
idblife
2023-02-23 11:10:50 +08:00
@julyclyde
上千个微服务,咋能知道具体用啥 key
bowser1701
2023-02-23 14:16:10 +08:00
@idblife
istio 可以实现你的需求, 可以简单把 redis 配置成一个 external name 的 service 然后服务用这个 service 去访问 redis 。或者配置 proxy external service 的规则。

然后可以在日志或者 trace 里面追踪你的 redis ,看看是哪些服务在访问它,用 pod ip 不太合适,因为是动态的,拿到 pod ip 你得想办法去找到对应的服务。

但是按照你的上下文,上千个微服务,redis 没有密码,这种设置是很危险的,如果数据被别人写了,都找不到是谁。
julyclyde
2023-02-23 14:54:58 +08:00
@idblife 那我觉得你直接关了就行了
等那些 pod 故障重生,就会去访问新的 redis 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/918217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX