从云运行连接到Google云MySql(knative)

从云运行连接到Google云MySql(knative),mysql,google-cloud-platform,cloud,google-cloud-run,Mysql,Google Cloud Platform,Cloud,Google Cloud Run,对于我正在处理的一个示例项目(),我在从googlecloudrun连接到googlecloudmysql数据库时遇到问题。但是,当我在本地使用相同的参数运行时(在docker和kubernetes中),应用程序看起来会成功 下面列出了我在设置google cloud运行应用程序时遵循的步骤()。我在云数据库信息中包含了mysql数据库。我尝试过的事情 使用jdbc连接字符串中的ip地址进行连接(该字符串在本地工作,但页面上的此语句表明它可能不在google cloud run上,“cloud

对于我正在处理的一个示例项目(),我在从googlecloudrun连接到googlecloudmysql数据库时遇到问题。但是,当我在本地使用相同的参数运行时(在docker和kubernetes中),应用程序看起来会成功

下面列出了我在设置google cloud运行应用程序时遵循的步骤()。我在云数据库信息中包含了mysql数据库。我尝试过的事情

使用jdbc连接字符串中的ip地址进行连接(该字符串在本地工作,但页面上的此语句表明它可能不在google cloud run上,“cloud run(完全管理)不支持使用TCP连接到cloud SQL实例。您的代码不应尝试使用ip地址(如127.0.0.1或172.17.0.1)访问该实例。”) 按照建议使用unix套接字连接,服务器甚至不会启动

当我在google cloud上用jdbc url中的ip地址启动应用程序时,应用程序似乎启动成功:

2020-02-12T02:51:01.733606Z 2020-02-12 02:51:01.733  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '' 
2020-02-12T02:51:01.740162Z 2020-02-12 02:51:01.739  INFO 1 --- [           main] com.connor.Application                   : Started Application in 15.717 seconds (JVM running for 17.715) 
但是,当我提出第一个请求时,我看到以下内容:

Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
Caused by: java.net.SocketTimeoutException: connect timed out
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

你有什么建议吗?我想知道这是否与必须按照此处所列配置数据源有关:

遵循文档步骤:

  • 在第二个链接的最后一步:“中,我没有使用代码段,而是使用了来自的以下命令:

    其中“helloworld”是我的服务的名称

    请仔细使用此命令的间距,因为它很容易抛出错误

    在执行curl命令后,我没有收到任何错误,因此我的应用程序运行成功

    此外,在我对您收到的错误进行调查期间,我遇到了一个问题,其中列出了导致此错误的可能原因

    最后,由于错误指示超时,您还可以尝试通过以下方式修改云运行的请求超时

    您还可以使用以下链接:

  • 我希望这些信息能有所帮助。

    遗憾的是,该文档目前没有记录Knative指令。任何时候看到“云运行(完全管理)”都不是Kubernetes实现的问题

    如果您在Kubernetes/GKE集群上使用Cloud Run,这可能更适用。这就是说,这种方法使用了“云SQL代理”侧车容器,这是目前Knative还不支持的概念


    但是,使用这些说明,您可以通过私有IP连接到云SQL实例,就像GKE集群可以位于VPC中一样(尽管“云运行完全管理”应用程序目前无法连接)。

    您使用的是云运行管理器还是Anthos?您如何部署到Cloud Run,您能分享这一行吗?@pentium10我刚刚使用ui部署了一个概念验证感谢Artemis的全面响应!我去看看是否有用!不客气!请让我知道事情的进展,这样如果发生任何事件,我们可以进一步调查。
     gcloud run services update helloworld --add-cloudsql-instances [INSTANCE_CONNECTION_NAME] --set-env-vars CLOUD_SQL_CONNECTION_NAME=[INSTANCE_CONNECTION_NAME],DB_USER=[MY_DB_USER],DB_PASS=[MY_DB_PASS],DB_NAME=[MY_DB]