我有一个nodejs express应用,该应用使用:
连接到mysql dbconst dbconfig = {
client: 'mysql',
connection: {
host: config.db.host,
user: config.db.user,
password: config.db.password,
database: config.db.database,
port: config.db.port,
charset: 'utf8',
ssl: {
ca: fs.readFileSync(__dirname + '/root_ca.pem')
}
}
}
在我本地的Docker Env中,此连接成功了,但是将其部署到Kube群集上时,我无法连接到主机:端口。
设置VPC以允许在该主机/端口上入口/出口流量。
也设置了服务和端点:
kind: "Service"
apiVersion: "v1"
metadata:
name: "mysql"
spec:
ports:
- name: "mysql"
protocol: "TCP"
port: 13306
nodePort: 0
selector: {}
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
name: "mysql"
subsets:
- addresses:
- ip: "34.201.17.84"
ports:
- port: 13306
name: "mysql"
更新:仍然没有运气,但更多的信息表明吊舱和节点无法到达主机。
因此,在Google支持的帮助下,我能够找到解决问题的解决方案。问题在于,将列入到数据库的白名单的IP地址不是LoadBalancer的IP地址。由于负载量是用于入口流量而不是出口流量的。
解决此问题的工作是创建一个私有集群,然后使用Google Cloud Nat服务通过单个IP(或IP范围)路由该集群的出口流量。完成此操作后,我就可以成功连接到DB,而无需额外的端点/MySQL服务。