Я получаю Не удалось разрешить метаданные хоста. Google.internal
или Не удалось разрешить метаданные хоста
ошибка при попытке доступа к серверу метаданных.
Хотя я использую свой собственный VPC с настраиваемым брандмауэром, я не думаю, что это проблема брандмауэра, потому что, согласно данным сервера метаданных Google, трафик никогда не покидает экземпляр. Кроме того, в моем файле хоста есть запись, подтверждающая это:
# сервер метаданных Google Compute Engine
169.254.169.254 metadata.google.internal metadata
Я попытался выполнить эхо-запрос 169.254.169.254, но он вернул General Failure
(но это ничего не доказывает .. Я не уверен, разрешает ли сервер метаданных ICMP).
Мои агенты Stackdriver Logging также не работают из-за этого. Вот строка из его журнала:
Не удалось получить доступ к службе метаданных: error_class = Errno :: ENETUNREACH error = "Не удалось открыть TCP-соединение с 169.254.169.254:80 (попытка выполнения операции сокета в недоступной сети. - connect ( 2) для \ "169.254.169.254 \" порт 80) "
В случае, если это имеет значение, внутренний трафик в моей сети VPC ограничен icmp
и tcp: 22
Только (ssh).
Что происходит и как решить эту проблему?
Хотя я использую свой собственный VPC с настраиваемым брандмауэром, я не думаю. проблема брандмауэра, потому что, согласно данным Google Metadata Server. Трафик метаданных GCP никогда не покидает экземпляр.
Трафик метаданных GCP никогда не покидает физический хост , на котором запущен экземпляр. Такие запросы исходят от гостевых интерфейсов, но никогда не пересылаются.
Брандмауэр уровня хоста в данном экземпляре может препятствовать доступу трафика к серверу метаданных. Он сбрасывает пакеты в сетевой стек экземпляра, прежде чем они покинут гостевой сервер.
Обычно служба метаданных отвечает на http, DNS и ICMP эхо, и все они не работают на вас. Только один скачок, так что не похоже, что он может быть неправильно маршрутизирован. Конечно, звучит как брандмауэр.
Это может быть вызвано отключением учетной записи службы для экземпляра. Вам нужна авторизация для доступа к метаданным.
В Google Cloud Console:
Я рекомендую либо «Разрешить доступ по умолчанию», либо «Разрешить полный доступ ко всем облачным API ". Реальный контроль доступа определяется ролями, назначенными учетной записи службы. Выбор «Области доступа» может только ограничивать эти роли и никогда не увеличивать их.
Затем избавьтесь от настраиваемой записи для метаданных в вашем файле hosts.
Для исправления проблемы можно попробовать добавить вручную внутренний DNS, это можно сделать, отредактировав файл resolv.conf, который вы найдете в пути: /etc/resolv.conf
Строка должна выглядеть так: nameserver 169.254.169.254,
Для более подробной информации смотрите документацию
Я вижу из вашего сообщения, что вы уже добавили хост:
169.254.169.254 metadata.google.internal metadata
Кроме того, я предлагаю вам проверить, что вы установили гостевое окружение, вы можете прочитать больше об этом и о том, как это сделать в этой документации.
.