gpt4 book ai didi

redis集群K8S连接

转载 作者:可可西里 更新时间:2023-11-01 11:23:45 25 4
gpt4 key购买 nike

我在 K8S 中运行一个 redis 集群:

kubectl get services -o wide
redis-cluster ClusterIP 10.97.31.167 <none> 6379/TCP,16379/TCP 22h app=redis-cluster

当从节点本身连接到集群 IP 时,连接工作正常:

redis-cli -h 10.97.31.167 -c
10.97.31.167:6379> set some_val 1
-> Redirected to slot [11662] located at 10.244.1.9:6379
OK
  1. 有什么方法可以从本地开发 VM 访问 redis 服务器,而无需将每个 pod 公开为服务?
  2. 当部署我的应用程序在集群内部运行时(稍后在生产环境中),我也应该使用集群 IP,还是应该使用 pod 的内部 IP 作为 redis-master 服务器的主 IP?

简单转发到远程机器是行不通的:

devvm:ssh -L 6380:10.97.31.167:6379 -i user.pem admin@k8snode.com

在开发虚拟机上:

root@devvm:~# redis-cli -h 127.0.0.1 -p 6380 -c
127.0.0.1:6380> set jaheller 1
-> Redirected to slot [11662] located at 10.244.1.9:6379

此时redis连接超时。

最佳答案

我相信在所有情况下,您只需要使用类型为 kubernetes 服务对象来公开服务:

  • 集群 IP(如果您在集群内使用它)

  • NodePort(用于外部访问)

  • LoadBalancer(在公共(public)访问的情况下并且如果您在云提供商上)

  • 带有外部负载均衡器的 NodePort(如果您在本地基础架构上,则用于公共(public)外部访问)

无需担心单个 pod。该服务将处理它们。

文档:

https://kubernetes.io/docs/concepts/services-networking/service/

关于redis集群K8S连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com