我们正在使用带有容器选项的谷歌云实例,我们在堆栈驱动程序日志中每分钟都会看到以下错误。我们不确定这个错误是什么。
api_server.cc:184 元数据请求失败:服务器响应“错误请求”(400):传输端点未连接
我认为这是已发布的云实例元数据服务 API,其中提供了实例详细信息。此外,在我们的一个用例中,我们在实例中使用 gcloud 命令行工具(在 docker 容器内),即使在 docker 容器启动后,gcloud 工具在前 2-5 分钟内也不必访问云 API。在这 2-5 分钟内,它显示类似服务帐户不可用的信息。
我想了解这个错误,但在谷歌搜索中找不到任何相关的详细信息。
答案1
我们也看到了类似的行为。我向 Google 发送了以下电子邮件:
你好,
我在使用时看到了一些不一致的行为
gcloud beta compute instances create-with-container
,想知道您是否曾经见过类似的行为:我有一个 docker 镜像(下面的 Dockerfile),我将其构建并推送到容器注册表。在 docker 容器的入口点,我执行一个脚本,该脚本使用 gcloud kms 命令解密密文,并使用 gcloud.compute.instances.delete 删除实例。如果我尝试
gcloud beta compute instances create-with-container
在推送新镜像后立即使用该镜像运行该镜像。gcloud 命令将出现错误,错误内容如下:“\u001b[1;31mERROR:\u001b[0m (gcloud.kms.decrypt) 所需属性 [project] 当前未设置。\r”
“您可以通过运行:\r 为您当前的工作区设置它”
“\r”
“$ gcloud config 设置项目值\r”
“\r”
“或者可以通过环境变量 [CLOUDSDK_CORE_PROJECT]\r 临时设置”
或者
“\u001b[1;31mERROR:\u001b[0m (gcloud.compute.instances.delete) 您当前尚未选择活动帐号。\r”
“请运行:\r”
“\r”
“$ gcloud auth login\r”
“\r”
“获取新凭证,或者如果您已经使用\r登录”
“不同的账户:\r”
“\r”
“$ gcloud config 设置帐户 ACCOUNT\r”
“\r”
“选择要使用的已经验证的帐户。\r”
如果我等待大约 3-4 分钟,然后使用完全相同的命令运行完全相同的图像,那么脚本将按预期成功运行。在我看来,设置 gcloud 身份验证存在一些延迟 - 是这样吗?您有什么推荐的方法来缓解这种行为吗?
并收到以下回复:
感谢您的联系和详细报告。我们一定会进一步调查此事,因为设置帐户和启动容器之间很可能存在一些不一致。不幸的是,除了在您从新创建的虚拟机容器发出第一个 gcloud 调用之前添加一个简单的“睡眠”命令之外,我还没有一个好的解决方法。当我了解更多信息或有此问题的解决方案时,我会跟进。