【问题标题】:Connect to Redis service from different service using kubernetes使用 kubernetes 从不同的服务连接到 Redis 服务
【发布时间】:2018-04-28 08:11:52
【问题描述】:

我在谷歌云平台上有一个 Kubernetes 集群,部署了许多服务。我在我的计算服务中导入了 redis-go,可以在这里创建一个新客户端来存储/检索数据到我的 redis 服务。我也希望能够从不同的服务访问这些存储的数据。我尝试使用 redis-go 并创建一个与我的 redis 服务集群具有相同地址的新客户端,但我无法检索任何数据。所以基本上我想知道如何从多个服务连接到单个 redis-service 实例。这是我用来拨打我的 redis 服务和存储/检索值的代码示例。我可以从每个单独的服务中存储和检索,但是如果我从一个服务中存储并尝试从另一个服务中检索它就不起作用。

      conn, _ := redis.Dial("tcp", "redis:6379")
      defer conn.Close()


      conn.Do("SET", "bbcTrump", "someValue")
    //someValue, _:= conn.Do("GET", "bbcTrump")

另外这里是我的 redis-deployment.yaml 和 redis-service.yaml 代码。可能这里有问题。

部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -f docker-compose.yml
    kompose.version: 1.10.0 (HEAD)
  creationTimestamp: null
  labels:
    io.kompose.service: redis
  name: redis
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: redis
    spec:
      containers:
      - image: redis
        name: redis
        ports:
        - containerPort: 6379
        resources: {}

      restartPolicy: Always
status: {}

服务:

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert -f docker-compose.yml
    kompose.version: 1.10.0 (HEAD)
  creationTimestamp: null
  labels:
    io.kompose.service: redis
  name: redis
spec:
  ports:
   - port: 6379
     targetPort: 6379
  selector:
    io.kompose.service: redis
status:
  loadBalancer: {}

【问题讨论】:

  • 但我无法检索任何数据请阅读 how to ask 并将您的问题改写为“当我尝试 $foo 时,它执行了 $bar,错误 $错误,但我期待 $baz"
  • 没有错误。我只是想知道如何从 GKE 中的其他服务连接到相同的 redis 服务。我解释说我在我的计算服务中创建了一个带有 redis-go 的新客户端,并且可以将数据存储和检索到我的 redis 服务。但是,当我尝试在不同的服务中创建相同类型的客户端时,我无法检索在计算服务中设置的任何数据。所以这导致我在我的 OP 结束时提出一个实际问题,如何从多个服务连接到单个 redis-service 实例。
  • 我无法再次检索在计算服务中设置的任何数据,我希望我知道如何用更简单的语言来解释:你怎么知道你没有检索任何数据:一些错误,找到零键,超时,......其他?如果您在 redis-cli MONITOR 中的一个 redis Pod 中,您是否看到其他键到达 - 也就是说,您是否确定其他操作实际上正确设置键以使其可供读取?
  • 你还有replicas: 1,如描述符中所示吗?因为 redis 不会自动集群自己:必须采取明确的步骤来集群它们,否则 k8s 将在与Service 的连接之间循环,这也会做一些奇怪的事情
  • 当我尝试从其他服务读取数据时,我得到“nil”。我可以从一个服务中读写,所以我知道这些功能正在工作。我对拥有单个副本的理解是有一个 redis 服务而不是多个。这意味着我发送到我的 redis 服务的数据应该可以从其他服务的调用中检索。我在这里可能是非常错误的,所以会看到集群的步骤是什么。感谢您的帮助。

标签: go redis kubernetes google-kubernetes-engine


【解决方案1】:

为了解决这个问题,我将计算服务部署 yaml 中的图像拉取策略设置为始终。我还将其端口更改为:8080,并从试用版升级了我的 GCP。其中之一或组合解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2018-10-19
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多