redis cluster 模式在 kubernetes 平台部署方案 只能提供给 k8s 集群内的应用使用,对集群外的应用根本用不了

2021-01-11 21:46:35 +08:00
 jack80342

redis cluster 模式在 kubernetes 平台部署方案 只能提供给 k8s 集群内的应用使用,对集群外的应用根本用不了,因为一旦涉及到 move 命令,redis 节点只会给出内部的 pod ip,这个使得集群外的应用根本连不上,因为这个涉及到 redis 的源码,redis 集群节点的相互通讯使用的 redis 进程所在的环境的 ip,而这个 ip 就是 pod ip,相对的节点发送给客户端的 move 的 ip 也是 pod ip 。 现向万能的社区征求方案意见,大家可自由发表方案意见。

2902 次点击
所在节点    Java
16 条回复
jj783850915
2021-01-11 23:25:58 +08:00
集群前搞个代理?阿里云的 redis 集群似乎就是这么搞的
lhx2008
2021-01-11 23:32:41 +08:00
pod ip 也可以是 underlay 的
ss098
2021-01-12 01:23:50 +08:00
可能需要一个 NodePort Service ?
Weny
2021-01-12 02:16:44 +08:00
handless 映射到公网,集群配置里填公网地址
jxlwqq
2021-01-12 09:11:53 +08:00
apply 个 对外的 Service 或者 Ingress
MatthewHan
2021-01-12 09:32:41 +08:00
搞个 type 为 NodePort 的 Service 可以暴露服务,默认的是 Service 是 ClusterIP 模式的,还有可以看下 Ingress 的相关内容。
monsterxx03
2021-01-12 10:00:34 +08:00
和 redis 没关系, 取决于你用的什么网络方案,比如 aws 上他们另外开发的 vpc cni plugin, 每个 pod 会被分配一个 vpc 内可路由的内网 ip, 给 redis cluster 设置 headless service 映射到 route53 上, 不在 k8s 内,但在 vpc 内的 pod 就能通过域名解析到正确的 ip.
haython
2021-01-12 13:51:16 +08:00
配置 redis 的 cluster-announce-ip
wennew
2021-01-12 14:17:58 +08:00
好像可以设置为宿主机的 ip,端口不一样就行
hz570815725
2021-01-13 09:14:20 +08:00
讲下我对 redis cluster 的三个理解:
1:k8s 上使用 StateFulSet 部署 redis cluster
2:需要集群外访问,两个办法,一是从 StateFulSet 通信角度出发,可以查看这篇文章,作者是 k8s 的工程师。Exposing StatefulSets in Kubernetes | by Bob Killen | ITNEXT
https://itnext.io/exposing-statefulsets-in-kubernetes-698730fb92a1 。根据他的文章,那么我们需要对 Redis 实例域名进行处理。二则是直接暴露 Node 的 IP,我对他进行了实现和实践,并写成了博客,链接在最后。

3:Chart 化,工具组件的本质是易用性,所以是有必要对其进行封装简化部署的。但我看到 Chart 包的 redis 集群,基本上都是 HA 哨兵实现的

K8s 部署 Redis Cluster 集群 | 猥琐发育不要浪
https://www.gotkx.com/?p=76
julyclyde
2021-01-13 14:06:05 +08:00
和 k8s service 基本上没啥关系
redis cluster 的客户端知道集群结构并且直接连接各节点
jack80342
2021-03-11 17:14:43 +08:00
@haython 因为实在 k8s 里面,不清楚 pod 会移到哪台机器上
jack80342
2021-03-11 17:16:35 +08:00
@jj783850915 请问您有具体的实现方式吗?
jack80342
2021-03-11 17:34:23 +08:00
@julyclyde 是的。就是因为 redis 集群在 k8s 里,而且集群的客户端直接连接集群的各节点导致的。
jack80342
2021-03-12 09:20:46 +08:00
@Weny 请问具体需要怎么操作?
julyclyde
2021-03-12 12:11:21 +08:00
@jack80342 redis 改为 host network 模式运行

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

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

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

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

© 2021 V2EX