Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

973
Visualizações
No se puede acceder al servicio NodePort fuera del clúster de Kubernetes

Estoy en Windows y usé Docker Desktop para implementar un clúster local de Kubernetes usando WSL 2. Intenté implementar un pod y exponerlo a través de un servicio NodePort para poder acceder a él fuera del clúster, pero no funciona.

Estos son los comandos para reproducir el escenario:

 kubectl create deployment echoserver --image=k8s.gcr.io/echoserver:1.4 kubectl expose deployment echoserver --type=NodePort --port=8080

Intentar abrir NODE_IP:EXPOSED_PORT en el navegador o ejecutar el comando nc NODE_IP EXPOSED_PORT e intentar enviar un mensaje (desde WSL o Windows) no funciona.

  • NODE_IP es la IP interna del nodo Docker Desktop K8S (obtenida al ver la columna INTERNAL-IP en el comando kubectl get nodes -o wide )
  • EXPOSED_PORT es el puerto de nodo expuesto por el servicio (obtenido al ver el campo NodePort en el comando kubectl describe service echoserver )

Abrir la URL en el navegador debe encontrarse con esta página. Sin embargo, obtendrá una respuesta de error genérica que indica que el navegador no pudo acceder a la URL.

El envío de un mensaje con el comando netcat debe recibir una respuesta de solicitud incorrecta 400, ya que no será una solicitud HTTP con el formato adecuado. Sin embargo, no obtendrá ninguna respuesta o es posible que la conexión TCP ni siquiera se realice en primer lugar.

Intentar comunicarse con el servicio y/o el pod desde dentro del clúster, por ejemplo, a través de otro pod, funciona perfectamente. Usar el comando kubectl port-forward deployment/echoserver 2311:8080 para reenviar el puerto de la implementación localmente y luego acceder a localhost:2311 en el navegador o a través de netcat también funciona perfectamente (tanto en WSL como en Windows).

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si desea acceder a él sin usar localhost, debe usar su <windows_hosts's_IP:NodePort> .

Entonces, tener su implementación y servicio implementado:

 $kubectl get svc,deploy NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/echoserver NodePort 10.105.169.2 <none> 8080:31570/TCP 4m12s service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m3s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/echoserver 1/1 1 1 4m19s

Puede acceder a él mediante localhost:31570 o <windows_hosts's_IP:NodePort>.

En mi caso, 192.168.0.29 es la IP de mi host de Windows:

 curl.exe 192.168.0.29:31570 CLIENT VALUES: client_address=192.168.65.3 command=GET real path=/ query=nil request_version=1.1 request_uri=http://192.168.0.29:8080/
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda