1
defunct9 2023-02-22 13:21:34 +08:00
看不到啊看不到
|
2
ql562482472 2023-02-22 13:24:48 +08:00
放进去就行了。
换种思路想一想,是不是 etcd 里有全部信息?是不是 K8SAPI 就能看到全部信息? |
3
idblife OP @ql562482472
你知道我在说啥么。。。 |
4
SweetEriri 2023-02-22 13:38:45 +08:00
istio 太麻烦了 直接命令或者 api 查询下就行了
|
5
salmon5 2023-02-22 13:42:38 +08:00
写个插件吧,往 redis 塞下 pod 的 ip
|
6
julyclyde 2023-02-22 13:42:46 +08:00
你的真实需求是什么呢?
获得了访问 redis 的 pod 的 IP ,然后呢? |
7
GopherDaily 2023-02-22 13:47:15 +08:00
让应用访问访问的时候使用不同的账号。
你这个不是上层和中层应用的问题了,是 k8s CNI ,阿里云 VPC ,或者 TCP 之类处理的,TCP 从宿主机网卡出,所以 IP 就是宿主机的,虽然不知道具体,但是一般默认都是这样的,建议你走上面的思路 |
9
ruanimal 2023-02-22 15:27:11 +08:00
看描述不是缺注册中心吗
|
10
nilai 2023-02-22 15:43:00 +08:00
用 ebpf 的 cni 是否能达到这个效果呢?
|
11
idblife OP |
13
julyclyde 2023-02-22 17:29:20 +08:00
@idblife 按说如果你的 redis 也在 k8s 集群内,pod 访问过来应该是 pod 自己的 IP 地址吧;经过 node 的 NAT 的时候才会变成 node 的 IP 地址
redis 下线前清退客户端这个需求,其实是服务治理的问题,我感觉你做反了方向了。 |
14
ql562482472 2023-02-22 17:33:44 +08:00
@idblife 我看你不太知道我在说啥
|
15
runzhliu 2023-02-22 17:37:21 +08:00 1
@idblife 听起来怪怪的,注册中心和 redis 都在集群外?三层网络下 pod 流量出去走了 NAT ,redis 看到的是节点 IP 是正常的,如果换 CNI 应该是适合大二层的场景了,或者容器配双网卡,一个三层一个二层。
|
17
liuhuan475 2023-02-22 18:35:22 +08:00
|
20
bowser1701 2023-02-22 20:46:30 +08:00 via iPhone
Pod IP 都是动态的,不如用账号做划分
|
21
idblife OP |
22
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 就可以 原理是这样,我们云上架构是找云厂商帮忙做的,具体怎么设置我就不清楚了,你搞明白可以分享一下,哈哈 |
25
bowser1701 2023-02-23 14:16:10 +08:00 via iPhone
@idblife
istio 可以实现你的需求, 可以简单把 redis 配置成一个 external name 的 service 然后服务用这个 service 去访问 redis 。或者配置 proxy external service 的规则。 然后可以在日志或者 trace 里面追踪你的 redis ,看看是哪些服务在访问它,用 pod ip 不太合适,因为是动态的,拿到 pod ip 你得想办法去找到对应的服务。 但是按照你的上下文,上千个微服务,redis 没有密码,这种设置是很危险的,如果数据被别人写了,都找不到是谁。 |