node.js - 当我尝试从 Kubernetes 内部连接到 Redis 时,总是连接失败

标签 node.js kubernetes redis ioredis

我的 Node 应用程序部署在 Kubernetes 集群内,当该应用程序尝试连接到 Kubernetes 外部的 Redis 时,它会抛出以下错误:

2019-09-04T06:21:55.320Z ioredis:redis status[101.37.199.xx:6379]: connecting -> connect
2019-09-04T06:21:55.321Z ioredis:redis write command[101.37.199.xx:6379]: 32 -> auth([ 'xxxxxx' ])
2019-09-04T06:21:55.321Z ioredis:redis write command[101.37.199.xx:6379]: 32 -> select([ '32' ])
2019-09-04T06:21:55.321Z ioredis:connection error: Error: write EPIPE
    at afterWriteDispatched (internal/stream_base_commons.js:146:25)
    at writeGeneric (internal/stream_base_commons.js:137:3)
    at Socket._writeGeneric (net.js:698:11)
    at Socket._write (net.js:710:8)
    at doWrite (_stream_writable.js:417:12)
    at writeOrBuffer (_stream_writable.js:401:5)
    at Socket.Writable.write (_stream_writable.js:301:11)
    at Redis.sendCommand (/app/node_modules/ioredis/built/redis/index.js:601:33)
    at Redis.select (/app/node_modules/ioredis/built/commander.js:124:21)
    at Socket.<anonymous> (/app/node_modules/ioredis/built/redis/event_handler.js:32:18) {
  errno: 'EPIPE',
  code: 'EPIPE',
  syscall: 'write'
}
[ioredis] Unhandled error event: Error: write EPIPE
    at afterWriteDispatched (internal/stream_base_commons.js:146:25)
    at writeGeneric (internal/stream_base_commons.js:137:3)
    at Socket._writeGeneric (net.js:698:11)
    at Socket._write (net.js:710:8)
    at doWrite (_stream_writable.js:417:12)
    at writeOrBuffer (_stream_writable.js:401:5)
    at Socket.Writable.write (_stream_writable.js:301:11)
    at Redis.sendCommand (/app/node_modules/ioredis/built/redis/index.js:601:33)
    at Redis.select (/app/node_modules/ioredis/built/commander.js:124:21)
    at Socket.<anonymous> enter code here(/app/node_modules/ioredis/built/redis/event_handler.js:32:18)
2019-09-04T06:21:55.324Z ioredis:redis queue command[101.37.199.xx:6379]: 32 -> info([])
2019-09-04T06:21:55.324Z ioredis:redis status[101.37.199.xx:6379]: connect -> close

我试过在kubernetes集群中部署redis-cli,它可以访问redis服务。

最佳答案

您必须在您的集群中将 redis 公开为一项服务

关于node.js - 当我尝试从 Kubernetes 内部连接到 Redis 时,总是连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57782747/

相关文章:

Docker Kubernetes (Mac) - Autoscaler 无法找到指标

node.js - 从 .env 文件创建 kubernetes env var secret

Django 使用多个redis进行缓存

html - 无法加载资源(css/js)AWS Lambda Express Node

node.js - 这是用 Neo4j 编写多语句事务的正确方法吗?

javascript - 如何将 id IS NOT NULL 与转义变量 ??/?

redis - Redis 中的时间复杂度到底意味着什么?

node.js - 如何使用 IntelliJ 或 WebStorm 调试 Electron 应用程序?

redis - Kubernetes - 无法从同一集群上的另一个 pod 连接到 redis pod

node.js - 使用 util.promisify 模拟 bluebird.promisifyAll