go - 是否可以通过 GKE 上的多个微服务共享单个 Redis 服务器?
问题描述
我有一个运行 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 中有一个 web 服务,它试图读取这个值。错误返回 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
如果我在 Web 服务中设置值,那么我可以很好地读取该值。我似乎无法在不同的服务中设置值。据我所知,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 帐户。我不确定其中哪一个解决了这个问题,但我很欣慰它现在得到了解决。
推荐阅读
- python - 如何在 Python 中自然地对 Pathlib 对象进行排序?
- gps - 如何在此处使用 GPS 坐标映射远程信息处理收费成本
- sql - SQL Query 在两个不同的查询中返回不同的结果
- php - Laravel 模型验证:如何只允许一个相关模型
- php - 如何将路由参数值传递给路由的中间件定义?
- c# - 列表不输出任何数据(System.DirectoryServices)
- javascript - 从 Safari 浏览器调用 Apple Pay 时,Apple 付款表未在 iOS13 中显示
- apache-spark - Spark saveAsTable 抛出 NoSuchTableException
- c++ - VS 2019 中输入文件的路径
- python - 包含消息的未标记文本数据