通过专用IP从GKE连接到Cloud SQL

问题描述

我正在尝试从GKE中的Pod连接到Google Cloud SQL。

上个周末我使它工作,但是当我删除吊舱并重新创建时,它不起作用,我不确定为什么。

说明

我有一个nodejs应用程序,已被docker化。它使用库sequelize并连接到postgres数据库。

Sequelize正在从环境中读取变量,在kubenetes中,我将它们传递给一个秘密

apiVersion: v1
kind: Secret
metadata:
  name: myapi-secret
  namespace: development
type: Opaque
data:
  MYAPI_DATABASE_CLIENT: XXX
  MYAPI_DATABASE_PORT : XXX
  MYAPI_DATABASE_HOST: XXX
  MYAPI_DATABASE_NAME : XXX
  MYAPI_DATABASE_USERNAME: XXX
  MYAPI_DATABASE_PASSWORD: XXX

我的广告连播定义

apiVersion: v1
kind: Pod
metadata:
  name: myapi
  namespace: development
  labels:
    env: dev
    app: myapi
spec:
  containers:
    - name: myapi
      image: gcr.io/companydev/myapi
      envFrom:
        - secretRef:
          name: myapi-secret
      
      ports:
        - containerPort: 3001
          name: myapi

部署Pod时,我收到与数据库的连接错误

Error: listen EACCES: permission denied tcp://podprivateip:3000
    at Server.setupListenHandle [as _listen2] (net.js:1300:21)
    at listenInCluster (net.js:1365:12)
    at Server.listen (net.js:1462:5)
    at Function.listen (/usr/src/app/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/usr/src/app/src/app.js:46:5)
    at Module._compile (internal/modules/cjs/loader.js:1076:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:941:32)
    at Function.Module._load (internal/modules/cjs/loader.js:782:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1344:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EACCES',errno: -13,syscall: 'listen',address: 'tcp://podprivateip:3000',port: -1
}

我不知道自己在想什么


由于@kurtisvg,我得以意识到我没有通过env变量来传递主机和端口。但是我仍然有连接错误

UnhandledPromiseRejection警告:SequelizeConnectionError:连接ETIMEDOUT postgresinternalip:5432

这很奇怪,因为postgres(云sql)和集群(gke)在同一个gcp网络中,但这就像pod无法看到数据库一样。

如果我在本地运行docker-compose,则该连接正常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)