我正在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
简单地转发到远程机器是行不通的:
devvm:ssh -L 6380:10.97.31.167:6379 -i user.pem admin@k8snode.com
在dev VM上:
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连接此时正在超时。
发布于 2019-03-12 17:08:02
我相信,在所有场景中,您只需使用类型为kubernetes的服务对象公开服务:
不需要担心个别的豆荚。服务处会照顾他们的。
医生:
https://kubernetes.io/docs/concepts/services-networking/service/
发布于 2019-03-21 11:54:35
我不认为你需要任何港口重定向。但是,您必须在集群上构建一个入口控制器,即nginx入口控制器
然后,您只需设置一个具有公开访问权限的入口服务,这将为集群通信提供服务。
下面是一个访问集群服务的宏控制器示例:
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
您可以一步一步地检查说明。
https://stackoverflow.com/questions/55126475
复制相似问题