gpt4 book ai didi

docker - 如何在 Kubernetes 内部调用 Redis?删除旧 Redis 服务的问题

转载 作者:行者123 更新时间:2023-12-02 20:41:37 25 4
gpt4 key购买 nike

以前我一直在 Docker for Desktop Kubernetes 上试验这个命令

helm install my-release --set password=password bitnami/redis
我已发出命令 helm uninstall my-release .
现在我正试图让我的 todolistclient 使用 redis 在 (Docker for Desktop) Kubernetes 中工作:
kubectl run redis --image=bitnami/redis:latest --replicas=1 --port=6379 --labels="ver=1,app=todo,env=proto" --env="REDIS_PASSWORD=password" --env="REDIS_REPLICATION_MODE=master" --env="REDIS_MASTER_PASSWORD=password"
kubectl run todolistclient --image=siegfried01/todolistclient:latest --replicas=3 --port=5000 --labels="ver=1,app=todo,env=proto"
当我查看 ToDoListClient 的日志时,我看到一个堆栈跟踪,表明它无法连接到 redis 服务器并显示以下错误消息:
System.AggregateException: One or more errors occurred. (No connection is available to service this operation: EVAL; SocketFailure on my-release-redis-master.default.svc.cluster.local:6379/Subscription, origin: Error, input-buffer: 0, outstanding: 0, last-read: 0s ago, last-write: 0s ago, unanswered-write: 9760s ago, keep-alive: 60s, pending: 0, state: Connecting, last-heartbeat: never, last-mbeat: -1s ago, global: 0s ago)
这是什么 my-release-redis-master.default.svc.cluster.local ?这已被卸载,我不再运行它了。
我的 C# 代码连接到 Redis
.AddDistributedRedisCache(options => { options.InstanceName = "OIDCTokens"; options.Configuration = "redis,password=password"; }) 
为了确定我确实使用了上面的代码,特别是“redis”,我重新编译了我的代码并再次推送到 DockerHub,我又遇到了同样的错误。
因此,显然 redis 的 Helm 版本留下了一些东西,将“redis”翻译成“my-release-redis-master”。如何删除它以便连接到当前的 redis?
谢谢
齐格弗里德

最佳答案

在您使用的 todolistclient 应用程序中 my-release-redis-master.default.svc.cluster.local:6379/Subscription .这是 service 的网址暴露 redis pod。这是由 helm release 自动创建的。
如果不需要,那么您需要将 todolistclient 应用程序中的 url 更改为您的 redis 服务。
您已经部署了 redis,但还没有创建任何服务来公开 redis,因此除非您创建它,否则您不能使用服务 url 连接到它。
所以你有两个选择

  • 在 todolistclient 应用程序中使用 redis pod IP。不建议这样做,因为重新启动时 Pod IP 会发生变化。
  • 创建一个服务,然后在 todolistclient 应用程序中使用该服务 url。
  • apiVersion: v1
    kind: Service
    metadata:
    name: redis-master
    labels:
    run: redis
    spec:
    ports:
    - port: 6379
    targetPort: 6379
    selector:
    run: redis
    这是 guide关于如何在 kubernetes 上部署留言簿应用程序并连接到 redis。
    一个建议不要对 todolistclient 和 redis 使用相同的标签

    关于docker - 如何在 Kubernetes 内部调用 Redis?删除旧 Redis 服务的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63096707/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com