将 Kubernetes 上的 node.js 运行 连接到云端 Sql
Connecting node.js running on Kubernetes to Cloud Sql
我正在尝试将我的 node.js 后端连接到同一个项目中的云 SQL,遵循了许多教程和文档,但没有成功。
这是我的服务和端点配置:
kind: Service
apiVersion: v1
metadata:
name: mysql-service
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 3306
targetPort: 3306
---
kind: Endpoints
apiVersion: v1
metadata:
name: mysql-service
subsets:
- addresses:
- ip: 10.78.176.3
ports:
- port: 3306
我站在 node.js 一边:
process.DB_HOST 10.78.176.3
process.DB_DATABASE marketplace_test
MySQL Connection pool error
connect ETIMEDOUT
我已经尝试通过 public 和私有 IP,通过 'mysql-service' 名称进行连接,但没有任何效果。
会不会是我遗漏的某种关系,比如 matchLabels
?我应该匹配服务+端点+部署吗?如何?
我必须为此使用代理吗?
我错过了什么?
感谢大家的帮助!
如果您通过私有 IP 连接,您需要确保满足 environment requirements on your GKE cluster. This means that it needs to be a VPC-native cluster。如果不是,则需要使用 public IP。
如果您使用的是 Public IP,则需要验证您的连接。有 3 种主要方法可以做到这一点:
- Via the Cloud SQL proxy - 这将使用 IAM 角色对连接进行身份验证
- Via an SSL/TLS certificate - 您可以在实例上创建一个并与客户端共享
- Via IP whitelisting - 这是最方便的,但也是最不安全的。
我正在尝试将我的 node.js 后端连接到同一个项目中的云 SQL,遵循了许多教程和文档,但没有成功。
这是我的服务和端点配置:
kind: Service
apiVersion: v1
metadata:
name: mysql-service
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 3306
targetPort: 3306
---
kind: Endpoints
apiVersion: v1
metadata:
name: mysql-service
subsets:
- addresses:
- ip: 10.78.176.3
ports:
- port: 3306
我站在 node.js 一边:
process.DB_HOST 10.78.176.3
process.DB_DATABASE marketplace_test
MySQL Connection pool error
connect ETIMEDOUT
我已经尝试通过 public 和私有 IP,通过 'mysql-service' 名称进行连接,但没有任何效果。
会不会是我遗漏的某种关系,比如 matchLabels
?我应该匹配服务+端点+部署吗?如何?
我必须为此使用代理吗?
我错过了什么?
感谢大家的帮助!
如果您通过私有 IP 连接,您需要确保满足 environment requirements on your GKE cluster. This means that it needs to be a VPC-native cluster。如果不是,则需要使用 public IP。
如果您使用的是 Public IP,则需要验证您的连接。有 3 种主要方法可以做到这一点:
- Via the Cloud SQL proxy - 这将使用 IAM 角色对连接进行身份验证
- Via an SSL/TLS certificate - 您可以在实例上创建一个并与客户端共享
- Via IP whitelisting - 这是最方便的,但也是最不安全的。