Puncte:1

Pod kubernetes care rulează pe motorul de calcul Google nu poate accesa serviciul de metadate

drapel vn

Încerc să rulez google cloud python sdk din interiorul unui pod k8, rulând pe motorul de calcul Google. Există un cont de serviciu atașat la VM, care îi oferă acces la managerul de secrete. Pot accesa managerul de secrete de la gazdă, cu toate acestea, rulând python sdk de la podul k8 se plâng că nu pot accesa serviciul de metadate

>>> secret_id = 'unskript_test'
>>> nume = client.secret_path(project_id, secret_id)
>>> răspuns = client.get_secret(cerere={"nume": nume})
Traceback (cel mai recent apel ultimul):
  Fișierul „/opt/conda/lib/python3.7/site-packages/google/api_core/grpc_helpers.py”, rândul 67, în error_remapped_callable
    returnează apelabil_(*args, **kwargs)
  Fișierul „/opt/conda/lib/python3.7/site-packages/grpc/_channel.py”, linia 946, în __call__
    return _end_unary_response_blocking(state, call, False, None)
  Fișierul „/opt/conda/lib/python3.7/site-packages/grpc/_channel.py”, rândul 849, în _end_unary_response_blocking
    ridică _InactiveRpcError(stare)
grpc._channel._InactiveRpcError: <_InactiveRpcError a RPC care s-a încheiat cu:
    status = StatusCode.UNAVAILABLE
    detalii = „Obținerea metadatelor de la plugin a eșuat cu eroare: nu s-a putut prelua http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true din serviciul de metadate Google Compute Engine. Metadatele Compute Engine Server indisponibil"
    debug_error_string = "{"created":"@1630634901.103779641","description":"Obținerea metadatelor de la plugin a eșuat cu eroare: nu s-a putut prelua http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default /?recursive=true din serviciul de metadate Google Compute Engine. Server de metadate Compute Engine indisponibil","file":"src/core/lib/security/credentials/plugin/plugin_credentials.cc","file_line":90,"grpc_status":14}"
>

metadata.google.internal nu se rezolvă din podul k8

jovyan@jovyan-25ca6c8c-157d-49e5-9366-f9d57fcb7a9f:~$ wget http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true
--2021-09-03 02:11:19-- http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true
Rezolvarea metadata.google.internal (metadata.google.internal)... nu a reușit: Numele sau serviciul nu se cunoaște.
wget: nu se poate rezolva adresa gazdei âmetadata.google.internalâ

Cu toate acestea, gazda este capabilă să o rezolve

ubuntu@gcp-test-proxy:~$ wget http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true
--2021-09-03 02:11:27-- http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true
Se rezolvă metadata.google.internal (metadata.google.internal)... 169.254.169.254
Se conectează la metadata.google.internal (metadata.google.internal)|169.254.169.254|:80... conectat.
Solicitare HTTP trimisă, așteaptă răspuns... 403 Interzis
2021-09-03 02:11:27 EROARE 403: Interzis.

Cum pot face ca podul să rezolve metadata.google.internal?

Bakul Mitra avatar
drapel cn
Salut @Amit. S-a rezolvat problema ta? Dacă da, puteți menționa pașii pe care i-ați luat pentru a rezolva problema. Sau dacă răspunsul dat a ajutat, îl puteți accepta sau vota în favoare..
Puncte:0
drapel jp

Acest lucru este cauzat de faptul că podul Kubernetes nu poate rezolva problema metadata.google.internal Numele DNS la adresa IP corectă. Mașina dvs. gazdă probabil are o intrare în /etc/hosts care codifică acest domeniu la IP: 169.254.169.254.

Ar trebui să puteți replica asta în Podul dvs. modificându-l /etc/hosts fişier.

Nu uitați că acest lucru va funcționa numai pe VM-urile care rulează pe GCP. În afară, adresa IP 169.254.169.254 este doar o altă adresă IP care nu are o semnificație specială.

EDIT: Tocmai am verificat /etc/hosts pe una dintre VM-urile mele GCP și iată ce am găsit:

$ cat /etc/hosts
127.0.0.1 localhost

# Următoarele linii sunt de dorit pentru gazdele capabile IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
169.254.169.254 metadata.google.internal metadata

Așa că încercați să copiați ultima linie în podurile dvs /etc/hosts.

Amit avatar
drapel vn
Mulțumesc @maciek. Problema a fost cu microk8s care nu copiază intrarea gazdelor etc. în poduri. Odată ce ne-am mutat la k3, s-a rezolvat

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.