【问题标题】:Is it possible to share a single Redis server over multiple micro services on GKE?是否可以通过 GKE 上的多个微服务共享单个 Redis 服务器?
【发布时间】:2018-05-11 15:17:13
【问题描述】:

我有一个运行 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 

【问题讨论】:

  • 您确定 Set 没有返回错误吗?
  • @jmaloney 我确信我必须在某个时候使用,但会再次检查,因为很明显这会告诉我是否可以从我的计算服务中设置。
  • @jmaloney 所以当我尝试在计算服务中设置键/值时,错误返回 nil。我的猜测是它正在写入客户端缓存而不是服务器。我仍在尝试在线查找 Redis 是否正常工作。
  • 我在您的 yaml 文件中没有看到 redis-service,请尝试仅使用 redis:6379 连接到 redis
  • 你是对的。我一直在进行很多更改以尝试使其正常工作。它应该在 yaml 中显示 redis-service。因此,即使进行了更改,我仍然无法在我的计算服务中设置键/值。我会在 OP 中解决这个问题

标签: go redis kubernetes google-kubernetes-engine


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2019-11-19
    • 2014-11-07
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多