【发布时间】:2020-09-13 16:16:42
【问题描述】:
我目前在 gcloud 容器存储库中有一个 docker 容器,我想启动一个实例以运行计算、保存结果并关闭:
gcloud compute instances create-with-container test-1 \
--machine-type=n1-standard-4 \
--boot-disk-size=20GB \
--container-image=eu.gcr.io/<container-link> \
--container-env=GCLOUD_INPUT_FILENAME=file.txt \
--container-env=GCLOUD_PROJECT=project-name
但是,我希望能够使用网络界面(flask)启动这些实例,这意味着我想使用googleapiclient(python)来创建和管理这些实例:
看起来您可以使用发现 api 创建实例创建顺序:
compute = googleclientapi.discovery.build('compute', 'v1')
compute.instances().insert(...).execute()
但看起来无法模拟create-with-container gcloud sdk 命令,尽管您可以将“machineImage”作为创建请求的一部分传递。
可以在不使用subprocess 调用gcloud sdk 的情况下创建一个“with-container”计算实例
或
我能否将我的create-with-container 实例转换为机器映像,然后使用googleapi client?
【问题讨论】:
-
尝试在启用
--log-http的情况下运行 gcloud 命令。您可以查看它生成的 google API 调用并复制它。 -
GCLOUD 可能执行了多个不同的调用。日志 http 可以显示您自己实现的所有调用以实现相同的行为
-
无法使用
--log-http找到好的答案。很想知道。评论关注。 -
计算实例 REST 请求包含在字典中序列化的 yaml 文件。在幕后,启动了一个标准的 containerizedOS (cos) 容器,而应该在顶部运行的容器通过字典传递,该字典本身包含 yaml 文件。我使用 cloudlib 作为创建计算实例的驱动程序 - 我可以使用 ex_metadata 参数将序列化的 yaml 作为字典传递。 yaml 有效负载字典:
{"items": [ "gce-container-declaration", "value": "<container-info + disclaimer>"}, "google-logging-enabled", "value": "true"}]}
标签: google-cloud-platform gcloud google-api-python-client gcloud-compute