首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >redis集群K8S连接

redis集群K8S连接
EN

Stack Overflow用户
提问于 2019-03-12 16:33:46
回答 2查看 2.8K关注 0票数 1

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

代码语言:javascript
运行
复制
kubectl get services -o wide
redis-cluster                              ClusterIP      10.97.31.167     <none>        6379/TCP,16379/TCP   22h   app=redis-cluster

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

代码语言:javascript
运行
复制
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,还是应该使用pods的内部IP作为redis-主服务器的主IP?

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

代码语言:javascript
运行
复制
devvm:ssh -L 6380:10.97.31.167:6379 -i user.pem admin@k8snode.com

在dev VM上:

代码语言:javascript
运行
复制
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连接此时正在超时。

EN

回答 2

Stack Overflow用户

发布于 2019-03-12 17:08:02

我相信,在所有场景中,您只需使用类型为kubernetes的服务对象公开服务:

  • 集群IP (以防您在集群中使用它)
  • NodePort (用于外部访问)
  • LoadBalancer (在公共访问的情况下,如果您是云提供商)
  • 带有外部负载均衡器的NodePort (如果您在本地基础设施上,则用于公共外部访问)

不需要担心个别的豆荚。服务处会照顾他们的。

医生:

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

票数 0
EN

Stack Overflow用户

发布于 2019-03-21 11:54:35

我不认为你需要任何港口重定向。但是,您必须在集群上构建一个入口控制器,即nginx入口控制器

然后,您只需设置一个具有公开访问权限的入口服务,这将为集群通信提供服务。

下面是一个访问集群服务的宏控制器示例:

代码语言:javascript
运行
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: redis-cluster-ing
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: redis-cluster
          servicePort: 6379

您可以一步一步地检查说明

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55126475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档