1

我的节点 js 应用程序抛出连接超时以连接 Redis 实例。我曾尝试将 redis 实例作为单独的部署以及内存存储 redis 实例来启动。作为 pod 中的部署,我使用普通节点端口并尝试使用集群 ip 访问此实例。该 ip 在 Config Map 中。

我试图从node js应用程序的pod中ping内存存储的ip以及gke上redis部署的集群ip,但它没有连接。

由于redis实例的部署也得到了内部ip:10.0.231.4

没有任何效果

内存存储:

gcloud redis instances describe my-redis --region=us-central1

Response:
authorizedNetwork: projects/xxxxx/global/networks/xxxxx
createTime: '2019-09-03T13:39:36.050896298Z'
currentLocationId: us-central1-a
host: 10.0.48.3
locationId: us-central1-a
memorySizeGb: 2
name: projects/xxxxx/locations/us-central1/instances/transact-redis
persistenceIamIdentity: serviceAccount:xxxxxxxxxxx-compute@developer.gserviceaccount.com
port: 6379
redisVersion: REDIS_4_0
reservedIpRange: 10.0.48.0/29
state: READY
tier: BASIC

我也从 cloud shell 尝试在 6379 端口上远程登录到 10.0.48.3。它也失败了。

这是日志:

2019-09-04 17:20:01.164 CEST at Socket.emit (events.js:209:13)
2019-09-04 17:20:01.164 CEST at emitErrorNT (internal/streams/destroy.js:91:8)
2019-09-04 17:20:01.164 CEST at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
2019-09-04 17:20:01.164 CEST at processTicksAndRejections (internal/process/task_queues.js:77:11) {
2019-09-04 17:20:01.164 CEST errno: 'ETIMEDOUT',
2019-09-04 17:20:01.164 CEST code: 'ETIMEDOUT',
2019-09-04 17:20:01.164 CEST syscall: 'connect',
2019-09-04 17:20:01.164 CEST address: '10.0.48.3',
2019-09-04 17:20:01.164 CEST port: 6379
2019-09-04 17:20:01.164 CEST}
2019-09-04 17:20:06.565 CESTContainer called exit(1).

知道如何使它工作吗?提前致谢。

4

1 回答 1

0

请记住,您可以从位于同一区域并使用与您的实例相同的网络的Google Kubernetes Engine 集群连接到您的Redis实例。

同样,如果未启用 VPC-native/IP 别名,您将无法从 Google Kubernetes Engine 集群连接到 Cloud Memorystore for Redis 实例

我的假设是,您的集群可能位于不同的区域,未配置您的 VPC 以进行内部连接,或者位于不同的 VPC 上。您是否尝试过此设置将 Redis 连接到 GKE 实例

让我随时了解任何进展!

于 2019-09-09T15:45:03.293 回答