Почему я не могу получить доступ к серверу метаданных экземпляра GCP?

Я получаю Не удалось разрешить метаданные хоста. 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).

Что происходит и как решить эту проблему?

1
задан 10 September 2019 в 10:50
3 ответа

Хотя я использую свой собственный VPC с настраиваемым брандмауэром, я не думаю. проблема брандмауэра, потому что, согласно данным Google Metadata Server. Трафик метаданных GCP никогда не покидает экземпляр.

Трафик метаданных GCP никогда не покидает физический хост , на котором запущен экземпляр. Такие запросы исходят от гостевых интерфейсов, но никогда не пересылаются.

Брандмауэр уровня хоста в данном экземпляре может препятствовать доступу трафика к серверу метаданных. Он сбрасывает пакеты в сетевой стек экземпляра, прежде чем они покинут гостевой сервер.

Обычно служба метаданных отвечает на http, DNS и ICMP эхо, и все они не работают на вас. Только один скачок, так что не похоже, что он может быть неправильно маршрутизирован. Конечно, звучит как брандмауэр.

2
ответ дан 3 December 2019 в 20:05

Это может быть вызвано отключением учетной записи службы для экземпляра. Вам нужна авторизация для доступа к метаданным.

В Google Cloud Console:

  • Перейдите в Compute Engine -> Экземпляры ВМ.
  • Остановить экземпляр.
  • Нажмите «Изменить» и прокрутите вниз до «Учетная запись службы».
  • Выберите правильный сервисный аккаунт, обычно «Сервисный аккаунт Compute Engine по умолчанию».
  • В разделе «Области доступа» выберите желаемую конфигурацию.

Я рекомендую либо «Разрешить доступ по умолчанию», либо «Разрешить полный доступ ко всем облачным API ". Реальный контроль доступа определяется ролями, назначенными учетной записи службы. Выбор «Области доступа» может только ограничивать эти роли и никогда не увеличивать их.

Затем избавьтесь от настраиваемой записи для метаданных в вашем файле hosts.

0
ответ дан 3 December 2019 в 20:05

Для исправления проблемы можно попробовать добавить вручную внутренний DNS, это можно сделать, отредактировав файл resolv.conf, который вы найдете в пути: /etc/resolv.conf

Строка должна выглядеть так: nameserver 169.254.169.254,

Для более подробной информации смотрите документацию

Я вижу из вашего сообщения, что вы уже добавили хост:

сервер метаданных Google Compute Engine

169.254.169.254    metadata.google.internal metadata

Кроме того, я предлагаю вам проверить, что вы установили гостевое окружение, вы можете прочитать больше об этом и о том, как это сделать в этой документации.

.
0
ответ дан 3 December 2019 в 20:05

Теги

Похожие вопросы