我在Kubernetes上部署了带rednami舵图(https://github.com/bitnami/charts/tree/master/bitnami/redis-cluster)的redis集群。
通过运行以下命令,我可以从Kubernetes集群成功连接到Redis集群:
kubectl run my-redis-release-client --rm -it --image docker.io/bitnami/redis:4.0.11-debian-9 -- bash
redis-cli -h redis-cluster-0.redis-cluster-headless.redis
但是我无法从部署在同一集群中的golang应用程序连接到Redis集群。
我在golang应用程序上使用的redis连接字符串uri是“ redis://redis-cluster-0.redis-cluster-headless.redis:6379”。这遵循“ redis-pod-name.redis-service-name.namespace”约定。
注意:我只希望能够从Kubernetes集群内部访问redis集群。我不想授予外部访问权限。请帮助...
答案 0 :(得分:1)
Headless
服务是您不需要负载平衡和单个服务IP的服务。 Headless
服务不是仅用于从Kubernetes集群内部访问redis集群
您可以创建一个服务来公开Redis。下面是创建ClusterIP
类型的示例,仅让您从集群内部而不是集群外部连接。
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: default
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
redis的pod或部署需要具有匹配的标签app: redis
然后,您可以使用redis.default.svc.cluster.local:6379
连接到它,从Golang应用程序连接到它。