如何授予AI平台培训作业对同一项目中云SQL资源的访问权限? [英] How can I grant AI Platform training jobs access to Cloud SQL resources in the same project?

查看:0
本文介绍了如何授予AI平台培训作业对同一项目中云SQL资源的访问权限?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个将运行我的培训工作的映像。培训数据在云SQL数据库中。当我在本地计算机上运行CLOUD_SQL_PROXY时,容器可以正常连接。

❯ docker run --rm us.gcr.io/myproject/trainer:latest mysql -uroot -h"'172.17.0.2'" -e"'show databases;'"

    Running: `mysql -uroot -h'172.17.0.2' -e'show databases;'`
    Database
    information_schema
    mytrainingdatagoeshere
    mysql
    performance_schema

我使用mysql只是为了测试连接,实际的训练命令在容器中的其他位置。当我通过AI平台尝试时,我无法连接。

❯ gcloud ai-platform jobs submit training firsttry3 
  --region us-west2 
  --master-image-uri us.gcr.io/myproject/trainer:latest 
  -- 
  mysql -uroot -h"'34.94.1.2'" -e"'show tables;'"

    Job [firsttry3] submitted successfully.
    Your job is still active. You may view the status of your job with the command

      $ gcloud ai-platform jobs describe firsttry3

    or continue streaming the logs with the command

      $ gcloud ai-platform jobs stream-logs firsttry3
    jobId: firsttry3
    state: QUEUED

❯ gcloud ai-platform jobs stream-logs firsttry3

    INFO    2019-12-16 22:58:23 -0700   service     Validating job requirements...
    INFO    2019-12-16 22:58:23 -0700   service     Job creation request has been successfully validated.
    INFO    2019-12-16 22:58:23 -0700   service     Job firsttry3 is queued.
    INFO    2019-12-16 22:58:24 -0700   service     Waiting for job to be provisioned.
    INFO    2019-12-16 22:58:26 -0700   service     Waiting for training program to start.
    ERROR   2019-12-16 22:59:32 -0700   master-replica-0        Entered Slicetool Container
    ERROR   2019-12-16 22:59:32 -0700   master-replica-0        Running: `mysql -uroot -h'34.94.1.2' -e'show tables;'`
    ERROR   2019-12-16 23:01:44 -0700   master-replica-0        ERROR 2003 (HY000): Can't connect to MySQL server on '34.94.1.2'

似乎无法从运行作业的任何位置访问主机。如何授予AI平台访问云SQL的权限?

我曾考虑将云SQL代理包括在培训容器中,然后将服务帐户凭据作为用户参数注入,但由于它们都在同一个项目中,我希望不需要执行此步骤。这些希望放错地方了吗?

推荐答案

不幸的是,并不是所有的云产品都被沙盒放到同一个网络中,因此您将无法在产品之间自动连接。因此,您遇到的问题是AI平台无法自动到达IP地址为34.xx.x.x的云SQL实例。

有几种方法可以修复它,尽管需要注意的是,我不太了解AI平台的网络设置(我很快就会在这里写博客)。首先,您可以尝试将AI平台连接到私有网络,然后将您的云SQL实例放入同一个私有网络中。这将允许它们通过私有IP相互通信(很可能不同于您现在拥有的IP)。在云SQL实例的连接详情中,您应该会看到您是否有内网IP,如果没有,可以在实例设置中启用内网IP(需要关机和重启)。否则,您可以确保设置了公共IP地址,可能是34.xx.x.x IP,然后是允许列表(白名单,但我正在尝试更改术语)AI平台的云IP地址。

您可以在此处了解GCP处理IP范围的方式:https://cloud.google.com/compute/docs/ip-addresses/

将这些范围添加到Cloud SQL连接设置中的授权网络后,您应该能够从AI平台直接连接。


原始回复

当您尝试从AI平台连接到代理时,代理在哪里运行?还在你的本地机器上吗?所以基本上,在场景1中,您使用docker run在本地运行容器,并连接到您的本地IP:172.17.0.2,然后当您向上转移到AI平台时,您将连接到您的本地计算机34.xx.x.x? 因此,首先,您可能希望从原始问题中删除您的实际家庭IP地址。人们在互联网上很粗鲁,如果这真的是你的家庭IP,那么这种情况可能会有糟糕的结局。 其次,你有多确定你已经在防火墙上打开了一个洞,允许来自人工智能平台的流量进入?一般来说,我认为问题出在这里,您本地计算机上的连接被拒绝,导致的错误是无法连接。

这篇关于如何授予AI平台培训作业对同一项目中云SQL资源的访问权限?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆