为什么 Google 管道 VM 实例无限期挂起?

Why are Google Pipeline VM instances hanging indefinitely?

我正在使用 Dockerflow 通过 Google 管道 API 在 Google 云平台上 运行 并行任务。我启动了一个单步任务 运行 并联 1389 台虚拟机,发现其中 233 台虚拟机显然什么都不做并且无限期地挂起。

我对串行控制台输出进行了抽查,并反复看到虚拟机 运行 进入 "Getting controller config failed" 错误。

当我尝试登录虚拟机时收到错误消息:"Connection Failed. We are unable to connect to the VM on port 22"。

我想知道为什么我的 VM 实例挂起,是否可以采取一些措施来避免 运行陷入这些问题。

我在下面包含了一段串行控制台输出

startupscript: +++ readlink -f /usr/share/google-genomics/startup.sh
startupscript: ++ dirname /usr/share/google-genomics/startup.sh
startupscript: + cd /usr/share/google-genomics
startupscript: + ./controller --operation_id <id> --validation_token <token> --base_path https://genomics.googleapis.com
create controller[2905]: Getting controller config
create controller[2905]: Getting controller config failed, will retry: Get <link>: Get <service_account_token_link>: net/http: timeout awaiting response headers
create controller[2905]: Getting controller config failed, will retry: Get <link>: dial tcp 74.125.26.95:443: i/o timeout
collectd[2342]: write_gcm: Asking metadata server for auth token
collectd[2342]: write_gcm: curl_easy_perform() failed: Couldn't connect to server
collectd[2342]: write_gcm: Error -1 from wg_curl_get_or_post
collectd[2342]: write_gcm: wg_transmit_unique_segment failed.
collectd[2342]: write_gcm: wg_transmit_unique_segments failed. Flushing.

可能存在临时网络问题。你能给我一些失败的操作 ID(或失败的 VM 名称)吗?

之后你有没有再试过;你能重现这个问题吗?

us-east1-b 出现临时网络问题。以上 3 个虚拟机都在 us-east1-b 中。这些小事件不会出现在 https://status.cloud.google.com/

成功 运行 的串行控制台输出如下所示:

2 月 21 日 19:05:06 ggp-5629907348021283130 启动脚本:+ ./controller --operation_id --validation_token --base_path https://autopush-genomics.sandbox.googleapis.com 2 月 21 日 19:05:06 ggp-5629907348021283130 创建控制器 [2689]:获取控制器配置 2 月 21 日 19:05:36 ggp-5629907348021283130 创建控制器 [2689]:获取控制器配置失败,将重试:获取 https://genomics.googleapis.com/v1alpha2/pipelines:getControllerConfig?alt=json&operationId=&validationToken=:拨打 tcp 173.194.212.81:443:i/o 超时 A Feb 21 19:05:43 ggp-5629907348021283130 controller[2689]:切换到状态:pulling-image 2 月 21 日 19:05:43 ggp-5629907348021283130 控制器 [2689]:调用 SetOperationStatus(拉图像) 2 月 21 日 19:05:44 ggp-5629907348021283130 控制器 [2689]:SetOperationStatus(拉图像)成功

"Getting controller config failed, will retry"没问题。重试后成功。 "SetOperationStatus(pulling-image) succeeded" 表示网络正常。

理论上,您可以将任意数量的作业提交到管道 API,API 将负责排队。

如果这些临时网络问题变得普遍,我们可能会考虑更改管道 API 以某种方式检测并重试。