首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Cloud Build连接到GKE集群上的gRPC服务

从Cloud Build连接到GKE集群上的gRPC服务
EN

Stack Overflow用户
提问于 2021-02-18 01:06:41
回答 1查看 145关注 0票数 0

我们正在使用一个托管Kubeflow Pipeline (KFP)实例,它是用GCP的AI Platform Pipeline创建的,还有一个托管MySQL实例,是用Cloud SQL创建的。我们还使用Cloud Build来构建和运行我们的KFP管道。我们想要添加一个云构建步骤,在KFP管道运行完成后,运行一个脚本,该脚本使用MLMD API来查询该管道运行的元数据。我们有一个MLMD脚本,当在GCP VM上手动运行时,它可以成功地查询元数据。问题一直是让该脚本在Cloud Build中运行。

第一种方法是使用mlmd.metadata_store.MetadataStore连接信息来创建MySQL对象,例如,

代码语言:javascript
复制
connection_config = metadata_store_pb2.ConnectionConfig()
connection_config.mysql.host = [IP address]
connection_config.mysql.port = 3306
connection_config.mysql.database = "kubeflow_experiments_metadata_metadata"
connection_config.mysql.user = [user]
connection_config.mysql.password = [password]
store = mlmd.metadata_store.MetadataStore(connection_config)

这在VM上运行得很好。然而,似乎需要Cloud SQL代理才能在Cloud Build中工作。以这个Cloud Functions codelab为例,我能够在Cloud Build中运行一个脚本,该脚本使用sqlalchemy通过代理连接到MySQL。但是,用于连接sqlalchemy和代理的方法似乎与上面的MLMD API不兼容。它看起来像这样:

代码语言:javascript
复制
driver_name = "mysql+pymysql"
query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
db = sqlalchemy.create_engine(
    sqlalchemy.engine.url.URL(drivername=driver_name, username=[user], password=[password], database="kubeflow_experiments_metadata_metadata", query=query_string),
    pool_size=5,
    max_overflow=2,
    pool_timeout=30,
    pool_recycle=1800,
)

第二种方法使用与KFP一起部署的MLMD gRPC服务。首先,我用端口转发服务:

代码语言:javascript
复制
kubectl port-forward svc/metadata-grpc-service 8080:8080

然后使用MLMD gRPC接口创建mlmd.metadata_store.MetadataStore

代码语言:javascript
复制
connection_config = metadata_store_pb2.MetadataStoreClientConfig(
    host="127.0.0.1",
    port=8080,
)
store = mlmd.metadata_store.MetadataStore(connection_config)

同样,这在VM上工作得很好。然而,我不确定如何从Cloud Build连接到gRPC服务。我使用gRPC和Kubernetes的经验有限,所以如果有一个简单的解决方案,我不会感到惊讶。

任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-19 10:00:53

通过其他途径,我被指向了这个article,其中包含了如何在云构建中转发KFP的ml管道服务的示例。我必须做一个小的修改,那就是删除kubectl port-forward命令的"-n""kubeflow"参数。这将指定kubectl以使用"kubeflow"命名空间。然而,GCP的AI平台管道似乎在部署您的"default"实例时创建了一个KFP名称空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66246693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档