Redis群集客户端无法与GKE上的Redis群集一起使用

时间:2019-07-23 11:12:16

标签: kubernetes redis redis-cluster

我的设置有一个K8S Redis群集,该群集上有8个节点和32个Pod,顶部是负载均衡器服务。

我正在使用Redis群集客户端通过负载平衡器的外部IP访问此群集。但是,在处理查询时,作为Redis群集重定向(MOVED / ASK)的一部分,群集客户端会接收32个Pod的内部IP地址,客户端内部无法连接到该Pod。

例如,我提供了负载均衡器的IP地址(35.245.51.198:6379),但是Redis集群客户端会抛出类似- 引起原因:redis.clients.jedis.exceptions.JedisConnectionException:无法连接到主机10.32.7.2:6379,它是内部Pod IP。

任何有关如何处理这种情况的想法将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您在GKE上运行,则可以使用IP masquerade agent对Pod IP进行NAT:

  

在群集中使用伪装的IP可以防止单个Pod IP地址暴露于本地链路范围(169.254.0.0/16)和其他任意IP范围之外的流量,从而提高其安全性

您的问题特别是,广告连播范围位于10.0.0.0/8上,默认情况下为non-masquerade CIDR

您可以使用ConfigMap将其更改为伪装,以使其选择节点的外部IP作为源地址。

或者,您可以change the pod range in your cluster进行任何被掩盖的操作。