go - 是否可以通过 GKE 上的多个微服务共享单个 Redis 服务器?

标签 go redis kubernetes google-kubernetes-engine

我有一个运行 redis 服务器的 redis 服务。我是否应该能够从不同服务的多个客户端存储和检索该服务的数据?到目前为止,我的实验一直没有成功。

我在自己的 pod 中有一个计算服务,它调用 redis 服务并存储一个键/值

rClient := redis.NewClient(&redis.Options{
    Addr:     "redis-service:6379",
    Password: "", // no password set
    DB:       0,  // use default DB
})

rClient.Set("trump", "value", 0).Err()

然后我在它自己的 pod 中有一个网络服务试图读取这个值。错误返回 Nil,值为空。

rClient := redis.NewClient(&redis.Options{
    Addr:     "redis-service:6379",
    Password: "", // no password set
    DB:       0,  // use default DB
})

val, err := rClient.Get("trump").Result()

fmt.Fprintf(w, "Print Error: %v \n", err) //prints nil

fmt.Fprintf(w, "Print Value: %s \n", val) // blank

如果我在网络服务中设置值,那么我可以很好地读取该值。我似乎无法在不同的服务中设置值。据我所知,Redis 将数据存储在服务器端,这将是 redis-service。

这是我的 redis-service 部署/服务 yaml 文件。可能是配置问题?

   apiVersion: v1
kind: Service
metadata:
  name: redis-service
  labels:
    app: redis-service
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis-service


apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redis-service
spec:
  selector:
    matchLabels:
      app: redis-service
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis-service
        role: master
        tier: backend
    spec:
      containers:
      - name: redis-service
        image: k8s.gcr.io/redis:e2e  # or just image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379 

最佳答案

这个问题已经解决了。我在我的计算服务部署 yaml 中将图像拉取策略设置为始终。我还将其端口从 :9090 更改为 8080,认为该端口可能已在其他地方使用。最后,我通过试用升级了我的 GCP 帐户。我不确定到底是哪一个解决了这个问题,但我很欣慰它现在已经解决了。

关于go - 是否可以通过 GKE 上的多个微服务共享单个 Redis 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50295415/

相关文章:

redis - 是否可以将在一个 Redis 实例 (6379) 中运行的两个单独的 DB (例如 db0、db1) 合并到一个 DB (db0) 中?

redis - ServiceStack 的 Redis 客户端中的乐观锁定

docker - CoreOS上的Kubernetes:代理服务最大占用CPU

kubernetes - 列出已安装图表的 helm 依赖项

go - 在 golang 中读取 yaml 配置文件,我总是需要结构吗?

mongodb - 如何在 mGo 中动态转换结果文档

Go 和 JWT - 简单的身份验证

Redis 限制 HKEYS

google-app-engine - Go App Engine 项目的包结构

docker - 在Kubernetes中具有持久卷的redisinsights