登录
首页 >  Golang >  Go问答

在同一集群中连接部署在 Golang 应用程序到 Kubernetes 上的 Redis 集群遇到问题

来源:stackoverflow

时间:2024-02-20 10:00:28 138浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《在同一集群中连接部署在 Golang 应用程序到 Kubernetes 上的 Redis 集群遇到问题》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我使用 bitnami helm Charts 在 Kubernetes 上部署了一个 Redis 集群 (https://github.com/bitnami/charts/tree/master/bitnami/redis-cluster)。

我可以通过运行以下命令从 Kubernetes 集群内成功连接到 Redis 集群:

  1. kubectl 运行 my-redis-release-client --rm -it --image docker.io/bitnami/redis:4.0.11-debian-9 -- bash

  2. 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 集群。我不想授予外部访问权限。请帮忙...


解决方案


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 应用程序连接到它。

理论要掌握,实操不能落!以上关于《在同一集群中连接部署在 Golang 应用程序到 Kubernetes 上的 Redis 集群遇到问题》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>