6 votes

Pourquoi ne puis-je pas accéder au serveur de métadonnées de l'Instance GCP ?

Je reçois Could not resolve host metadata.google.internal o Could not resolve host metadata erreur lorsque j'essaie d'accéder au serveur de métadonnées.

Bien que j'utilise mon propre VPC avec un pare-feu personnalisé, je ne pense pas qu'il s'agisse d'un problème de pare-feu car, selon Google Metadata Server, le trafic ne quitte jamais l'instance. D'ailleurs, il y a une entrée dans mon fichier d'hôte qui le prouve :

# Google Compute Engine metadata server 169.254.169.254 metadata.google.internal metadata

J'ai essayé d'envoyer un ping à 169.254.169.254, mais il renvoie General Failure (mais, cela ne prouve rien Je ne suis pas sûr que Metadata Server autorise ICMP).

Mes agents de journalisation Stackdriver échouent également à cause de cela. Voici une ligne de son journal :

Failed to access metadata service: error_class=Errno::ENETUNREACH error="Failed to open TCP connection to 169.254.169.254:80 (A socket operation was attempted to an unreachable network. - connect(2) for \"169.254.169.254\" port 80)"

Au cas où cela aurait de l'importance, le trafic interne de mon réseau VPC est limité à icmp y tcp:22 (ssh) uniquement.

Que se passe-t-il et comment résoudre ce problème ?

5voto

John Mahowald Points 28597

Bien que j'utilise mon propre VPC avec des sapins personnalisés. pare-feu car, selon le serveur de métadonnées de Google, le trafic ne le trafic ne quitte jamais l'instance.

Le trafic des métadonnées du GCP ne quitte jamais le hôte physique l'exécution de l'instance. Ces demandes sortent par les interfaces de l'invité, mais ne sont jamais transmises.

Un pare-feu au niveau de l'hôte dans l'instance peut empêcher le trafic d'atteindre le serveur de métadonnées. En effet, il supprime les paquets dans la pile réseau de l'instance avant qu'ils ne quittent l'invité.

Normalement, le service de métadonnées répond à l'écho http, DNS et ICMP, et toutes ces réponses ne fonctionnent pas pour vous. Il n'y a qu'un seul saut, donc il n'y a pas de risque de mauvais acheminement. On dirait bien un pare-feu.

3voto

John Hanley Points 3849

Cela peut être dû à la désactivation du compte de service de l'instance. Vous avez besoin d'une autorisation pour accéder aux métadonnées.

Dans la Google Cloud Console :

  • Allez dans Compute Engine -> VM instances.
  • Arrêtez l'instance.
  • Cliquez sur "Modifier" et faites défiler la liste jusqu'à "Compte de service".
  • Choisissez le compte de service correct, généralement "Compute Engine default service account".
  • Sous Scopes d'accès, choisissez la configuration souhaitée.

Je recommande soit "Autoriser l'accès par défaut", soit "Autoriser l'accès complet à toutes les API du Cloud". Le véritable contrôle d'accès est déterminé par les rôles attribués au compte de service. La sélection "Access scopes" ne peut que limiter ces rôles et ne peut jamais les augmenter.

Ensuite, supprimez votre entrée personnalisée pour les métadonnées dans votre fichier hosts.

2voto

Flannon Points 1

Vous devez définir la saveur des métadonnées dans l'en-tête curl,

curl -v -w "\n" -H "Metadata-Flavor: Google" \ 
  http://169.254.169.254/computeMetadata/v1/instance/machine-type

1voto

Jorge P. Points 11

Pour résoudre ce problème, vous pouvez essayer d'ajouter manuellement le DNS interne, en modifiant le fichier resolv.conf que vous trouverez dans le chemin : /etc/resolv.conf

La ligne devrait ressembler à ceci : nameserver 169.254.169.254,

Pour plus de détails, consultez cette page documentation

Je vois dans votre message que vous avez déjà ajouté l'hôte :

Serveur de métadonnées Google Compute Engine

169.254.169.254    metadata.google.internal metadata

En outre, je vous suggère de vérifier que vous avez installé l'environnement invité, vous pouvez en savoir plus à ce sujet et sur la façon de le faire en lisant ceci documentation .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X