将Kubernetes上运行的node.js连接到云Sql

将Kubernetes上运行的node.js连接到云Sql,kubernetes,google-cloud-platform,google-cloud-sql,Kubernetes,Google Cloud Platform,Google 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 metadat

我正在尝试将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
我已经尝试通过公共IP和私有IP,通过“mysql服务”名称进行连接,但没有任何效果

可能是我缺少的某种关系,比如
匹配标签
?我应该匹配服务+端点+部署吗?怎样 我必须为此使用代理吗

我错过了什么


谢谢你的帮助

如果您是通过专用IP连接,则需要确保满足GKE群集上的要求。这意味着,它需要是一个。如果不是,则需要使用公共IP

如果您使用的是公共IP,则需要验证您的连接。有三种主要方法可以做到这一点:

  • -这将使用IAM角色对连接进行身份验证
  • -您可以在实例上创建一个,并与客户端共享
  • -这是最方便但最不安全的
您确定您的群集的ip是公共的吗?我认为对您来说,最好的方法是执行其中一个部署并尝试卷曲ip(直接),然后对服务尝试相同的方法。分享你的results@Amityo我现在很困惑,因为一个
curl-v10.78.176.3:3306
显示它可以连接。它连接起来了。正在从ssh实例运行。。会发生什么?从k8s或您的计算机进行Ssh?卷发怎么样service@Amityo从GCP上的实例。卷边连接内部ip。公用IP和服务名称未连接。然后,实例可以访问内部ip和端口。。。为什么pod没有连接?你能写出kubectl描述mysql服务的输出吗?