首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误: gcloud已崩溃(CannotConnectToMetadataServerException):<urlopen error [Errno -2]名称不是resolve>

错误: gcloud已崩溃(CannotConnectToMetadataServerException):<urlopen error [Errno -2]名称不是resolve>
EN

Stack Overflow用户
提问于 2018-04-04 03:06:32
回答 1查看 1.2K关注 0票数 0

我在使用命令gcloud container clusters get-credentials将容器配置为指向Kubernetes集群时遇到了问题。我得到以下错误。

代码语言:javascript
复制
ERROR: gcloud crashed (CannotConnectToMetadataServerException): <urlopen error [Errno -2] Name does not resolve>

If you would like to report this issue, please run the following command:
  gcloud feedback

To check gcloud for common problems, please run the following command:
  gcloud info --run-diagnostics

增强的日志记录:

代码语言:javascript
复制
CannotConnectToMetadataServerException: <urlopen error [Errno -2] Name does not resolve>
2018-04-10 18:00:42,625 ERROR    ___FILE_ONLY___ BEGIN CRASH STACKTRACE
Traceback (most recent call last):
  File "/google-cloud-sdk/lib/googlecloudsdk/gcloud_main.py", line 147, in main
    gcloud_cli.Execute()
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 818, in Execute
    self._HandleAllErrors(exc, command_path_string, specified_arg_names)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 856, in _HandleAllErrors
    exceptions.HandleError(exc, command_path_string, self.__known_error_handler)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/exceptions.py", line 526, in HandleError
    core_exceptions.reraise(exc)
  File "/google-cloud-sdk/lib/googlecloudsdk/core/exceptions.py", line 111, in reraise
    six.reraise(type(exc_value), exc_value, tb)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 792, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 751, in Run
    self._parent_group.RunGroupFilter(tool_context, args)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 692, in RunGroupFilter
    self._parent_group.RunGroupFilter(context, args)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 693, in RunGroupFilter
    self._common_type().Filter(context, args)
  File "/google-cloud-sdk/lib/surface/container/__init__.py", line 71, in Filter
    context['api_adapter'] = api_adapter.NewAPIAdapter('v1')
  File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/container/api_adapter.py", line 147, in NewAPIAdapter
    return NewV1APIAdapter()
  File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/container/api_adapter.py", line 151, in NewV1APIAdapter
    return InitAPIAdapter('v1', V1Adapter)
  File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/container/api_adapter.py", line 172, in InitAPIAdapter
    api_client = core_apis.GetClientInstance('container', api_version)
  File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/util/apis.py", line 297, in GetClientInstance
    api_name, api_version, no_http, _CheckResponse, enable_resource_quota)
  File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/util/apis_internal.py", line 153, in _GetClientInstance
    http_client = http.Http(enable_resource_quota=enable_resource_quota)
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/http.py", line 64, in Http
    creds = store.LoadIfEnabled()
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 281, in LoadIfEnabled
    return Load()
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 348, in Load
    cred = STATIC_CREDENTIAL_PROVIDERS.GetCredentials(account)
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 162, in GetCredentials
    cred = provider.GetCredentials(account)
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 214, in GetCredentials
    if account in c_gce.Metadata().Accounts():
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/gce.py", line 127, in Accounts
    gce_read.GOOGLE_GCE_METADATA_ACCOUNTS_URI + '/')
  File "/google-cloud-sdk/lib/googlecloudsdk/core/util/retry.py", line 289, in DecoratedFunction
    exceptions.reraise(to_reraise[1], tb=to_reraise[2])
  File "/google-cloud-sdk/lib/googlecloudsdk/core/exceptions.py", line 111, in reraise
    six.reraise(type(exc_value), exc_value, tb)
  File "/google-cloud-sdk/lib/googlecloudsdk/core/util/retry.py", line 159, in TryFunc
    return func(*args, **kwargs), None
  File "/google-cloud-sdk/lib/googlecloudsdk/core/credentials/gce.py", line 52, in _ReadNoProxyWithCleanFailures
    raise CannotConnectToMetadataServerException(e)
CannotConnectToMetadataServerException: <urlopen error [Errno -2] Name does not resolve>

为了增加一些色彩,我们每次向github推送代码时,都会启动对CircleCI的构建。然而,我们有一个在内部称为belushi的容器,我们使用它来运行我们的整个基础设施。这个容器中安装了gcloud。CircleCI基础设施在亚马逊网络服务上,当他们启动belushi容器时,我们实际上运行gcloud get-credentials,将belushi容器指向我们在谷歌云中的项目,该项目配置了kubernetes集群,我们在该集群中运行所有功能CI测试。因此,我们需要在ci项目中配置belushi pod才能继续。

奇怪的是,belushi :最新的镜像总是正确配置的;然而,当我们在belushi上工作时,我们经常分支并创建一个新的镜像来运行测试。例如,我将在belushi中创建一个分支,然后有一个新的哈希值1234567,因此我们将旋转belushi:1234567映像并尝试运行程序,我们做的第一件事是将其配置为指向ci项目;但是,我们获得了解决问题的元数据。

我觉得这是与DNS相关的,或者可能是元数据服务器不允许belushi的新图像立即与其通信。在我多次重试之后,它最终会正确配置(不需要任何代码更改)。因此,我想知道元数据服务器是否出于某种原因拒绝了它,或者它可能在AWS上由于某种未知的原因而无法解析。

EN

回答 1

Stack Overflow用户

发布于 2018-04-12 17:16:30

要进行故障排除,您可以做的第一件事是,当您收到此错误时,尝试执行以下操作:

代码语言:javascript
复制
curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/

元数据服务器应该立即使用您的服务帐户元数据进行响应。

你的容器在任何类型的http代理后面吗?

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

https://stackoverflow.com/questions/49637446

复制
相关文章

相似问题

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