启动 Dataflow Flex 模板时图像引用不正确
Incorrect image reference when launching Dataflow Flex templates
我们正在使用 Dataflow Flex 模板并遵循本指南 (https://cloud.google.com/dataflow/docs/guides/templates/using-flex-templates) 来暂存和启动作业。这在我们的环境中有效。但是,当我通过 SSH 连接到 Dataflow VM 和 运行 docker ps
时,我看到它引用了一个不同的 docker 图像到我们在模板中指定的图像(绿色下划线):
我启动的模板如下,作业是使用 gcloud beta dataflow flex-template run
:
创建的
{
"image": "gcr.io/<MY PROJECT ID>/samples/dataflow/streaming-beam-sql:latest",
"metadata": {
"description": "An Apache Beam streaming pipeline that reads JSON encoded messages from Pub/Sub, uses Beam SQL to transform the message data, and writes the results to a BigQuery",
"name": "Streaming Beam SQL",
"parameters": [
{
"helpText": "Pub/Sub subscription to read from.",
"label": "Pub/Sub input subscription.",
"name": "inputSubscription",
"regexes": [
".*"
]
},
{
"helpText": "BigQuery table spec to write to, in the form 'project:dataset.table'.",
"is_optional": true,
"label": "BigQuery output table",
"name": "outputTable",
"regexes": [
"[^:]+:[^.]+[.].+"
]
}
]
},
"sdkInfo": {
"language": "JAVA"
}
}
所以我希望 docker ps
的输出显示 gcr.io/<MY PROJECT ID>/samples/dataflow/streaming-beam-sql
作为 Dataflow 上的图像。当我在 GCE 实例上将图像从 GCR 启动到 运行 时,我在 运行ning docker ps
:
时得到以下输出
我是否应该在 Dataflow VM 上看到我在 Dataflow 模板中引用的图像的名称?还是我错过了某处?
谢谢!
TLDR;您正在查看工作 VM 而不是启动器 VM。
对于 flex 模板,当您 运行 作业时,它首先会创建一个启动器 VM,它会在其中拉取您的容器,然后 运行 使用它来生成作业图。完成此步骤后,此 VM 将被销毁。然后启动 worker VM 以实际 运行 生成的作业图。在 worker VM 中不需要您的容器。您的容器仅用于根据传递的参数生成作业图。
在您的情况下,您正在尝试在工作虚拟机中搜索您的映像。启动器 VM 的寿命很短,并以启动器 -************************ 启动。如果您通过 SSH 进入该虚拟机并执行 docker ps
,您将能够看到您的容器映像。
我们正在使用 Dataflow Flex 模板并遵循本指南 (https://cloud.google.com/dataflow/docs/guides/templates/using-flex-templates) 来暂存和启动作业。这在我们的环境中有效。但是,当我通过 SSH 连接到 Dataflow VM 和 运行 docker ps
时,我看到它引用了一个不同的 docker 图像到我们在模板中指定的图像(绿色下划线):
我启动的模板如下,作业是使用 gcloud beta dataflow flex-template run
:
{
"image": "gcr.io/<MY PROJECT ID>/samples/dataflow/streaming-beam-sql:latest",
"metadata": {
"description": "An Apache Beam streaming pipeline that reads JSON encoded messages from Pub/Sub, uses Beam SQL to transform the message data, and writes the results to a BigQuery",
"name": "Streaming Beam SQL",
"parameters": [
{
"helpText": "Pub/Sub subscription to read from.",
"label": "Pub/Sub input subscription.",
"name": "inputSubscription",
"regexes": [
".*"
]
},
{
"helpText": "BigQuery table spec to write to, in the form 'project:dataset.table'.",
"is_optional": true,
"label": "BigQuery output table",
"name": "outputTable",
"regexes": [
"[^:]+:[^.]+[.].+"
]
}
]
},
"sdkInfo": {
"language": "JAVA"
}
}
所以我希望 docker ps
的输出显示 gcr.io/<MY PROJECT ID>/samples/dataflow/streaming-beam-sql
作为 Dataflow 上的图像。当我在 GCE 实例上将图像从 GCR 启动到 运行 时,我在 运行ning docker ps
:
我是否应该在 Dataflow VM 上看到我在 Dataflow 模板中引用的图像的名称?还是我错过了某处?
谢谢!
TLDR;您正在查看工作 VM 而不是启动器 VM。
对于 flex 模板,当您 运行 作业时,它首先会创建一个启动器 VM,它会在其中拉取您的容器,然后 运行 使用它来生成作业图。完成此步骤后,此 VM 将被销毁。然后启动 worker VM 以实际 运行 生成的作业图。在 worker VM 中不需要您的容器。您的容器仅用于根据传递的参数生成作业图。
在您的情况下,您正在尝试在工作虚拟机中搜索您的映像。启动器 VM 的寿命很短,并以启动器 -************************ 启动。如果您通过 SSH 进入该虚拟机并执行 docker ps
,您将能够看到您的容器映像。