我正在 GKE(Google Kubernetes Engine)和使用 Redis 的 GCE 实例的系统上构建应用程序。当我尝试从 GKE 上的应用程序 pod 连接到 GCE 上的 Redis 时,我收到连接被拒绝。(dial tcp <REMOTE-IP>:6379: connect: connection refused
)该应用程序是用 Go 编写的,redis 库是 go-redis(v8)。为什么我无法连接?
连接部分和出错部分的源码如下。
redisServerName = os.Getenv("REDIS_SERVER") // "sample.com:6379"
redisClient = redis.NewClient(&redis.Options{
Addr: redisServerName,
Password: "",
DB: 0,
})
p, err := redisClient.Ping(ctx).Result()
log.Println(p, err)
主机名解析了,所以不是DNS问题,而且redis-cli命令是可执行的,所以看起来也不是防火墙问题。
# redis-cli -h <REMOTE_IP> ping
PONG
- 后记
这是在运行 Go 应用程序的情况下从 Pod 运行命令的结果
/# redis-cli -h redis.sample.com
redis.sample.com:6379> // can connect
/# nc redis.sample.com 6379
// There is NO response.