Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

521
Views
AWS EKS, ¿Cómo acceder a Pod directamente desde el navegador?

Soy muy nuevo en kubernetes. Pasé la última semana aprendiendo sobre nodos, pods, clústeres, servicios e implementaciones.

Con eso, estoy tratando de comprender un poco más cómo funciona la red para kubernetes. Solo quiero exponer una página web simple de nginx docker y presionarla desde mi navegador.

Nuestra VPC está configurada con una conexión directa, por lo que puedo acceder a instancias EC2 en sus direcciones IP privadas. También configuré el clúster de EKS usando la interfaz de usuario en aws por ahora como private . Con fines de prueba, agregué mi rango cidr para que se permita en todos los TCP como un grupo de seguridad adicional en la interfaz de usuario del clúster de EKS.

Aquí están mis definiciones básicas de servicio e implementación:

 apiVersion: v1 kind: Service metadata: name: testing-nodeport namespace: default labels: infrastructure: fargate app: testing-app spec: type: NodePort selector: app: testing-app ports: - port: 80 targetPort: testing-port protocol: TCP --- apiVersion: apps/v1 kind: Deployment metadata: name: testing-deployment namespace: default labels: infrastructure: fargate app: testing-app spec: replicas: 1 selector: matchLabels: infrastructure: fargate app: testing-app template: metadata: labels: infrastructure: fargate app: testing-app spec: containers: - name: nginx image: nginx:1.14.2 ports: - name: testing-port containerPort: 80

Puedo ver que todo funciona correctamente cuando ejecuto:

kubectl get all -n default

Sin embargo, cuando trato de acceder a la dirección IP de NodePort en el puerto 80 , no puedo cargarla desde el navegador.

Puedo acceder al pod si primero configuro un kubectl proxy en la siguiente URL (ya que el proxy se inicia en el puerto 8001 ):

 http://localhost:8001/api/v1/namespaces/default/services/testing-nodeport:80/proxy/

Estoy bastante perdido en este punto. No sé qué estoy haciendo mal y por qué no puedo acceder a la ventana acoplable nginx básica fuera del comando de proxy kubectl.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

¿Qué pasa si usas la opción proxy ? Algo como esto:

 kubectl port-forward -n default service/testing-nodeport 3000:80 Forwarding from 127.0.0.1:3000 -> 80 Forwarding from [::1]:3000 -> 80

Después de esto, puede acceder a su servicio K8S desde localhost:3000 . Más información aquí

over 4 years ago · Santiago Trujillo Report

0

Imagine que el clúster de kubernetes es como su VPC de AWS. Tiene su propia red interna con IP privadas y conecta todos los POD. Kubernetes solo expone las cosas que solicita explícitamente que se expongan.

El puerto de servicio 80 está disponible dentro del clúster. Entonces, un pod puede hablar con este servicio usando el service name:service port . Pero si necesita acceder desde el exterior, necesita ingress controller / LoadBalancer . También puede utilizar NodePort con fines de prueba. El puerto del nodo será algo mayor que 30000 (dentro de este 30000-32767).

Debería poder acceder a nginx usando node IP:nodeport . Aquí asumí que tiene un grupo de seguridad que abre el puerto del nodo.


Usa este yaml. Actualicé el puerto del nodo para que sea 31000. Puede acceder a nginx en nodeport:31000 . Como mencioné, no puede usar 80 como está dentro del clúster. Si necesita usar 80, entonces necesita un controlador de ingreso.

 apiVersion: v1 kind: Service metadata: name: testing-nodeport namespace: default labels: infrastructure: fargate app: testing-app spec: type: NodePort selector: app: testing-app ports: - port: 80 targetPort: testing-port protocol: TCP nodePort: 31000 --- apiVersion: apps/v1 kind: Deployment metadata: name: testing-deployment namespace: default labels: infrastructure: fargate app: testing-app spec: replicas: 1 selector: matchLabels: infrastructure: fargate app: testing-app template: metadata: labels: infrastructure: fargate app: testing-app spec: containers: - name: nginx image: nginx:1.14.2 ports: - name: testing-port containerPort: 80
over 4 years ago · Santiago Trujillo Report

0

Bien, después de más de 16 horas depurando esto, finalmente descubrí lo que estaba pasando. En fargate no puede configurar los grupos de seguridad por nodo como puede hacerlo con los grupos de nodos administrados. Estaba configurando las reglas del grupo de seguridad en la configuración de "Grupos de seguridad adicionales". Sin embargo, fargate aparentemente ignora por completo esas configuraciones y SOLAMENTE usa el grupo de seguridad de su configuración de "Grupo de seguridad de clúster". Entonces, en la interfaz de usuario de EKS, configuré las reglas correctas en el "Grupo de seguridad del clúster" y ahora puedo acceder a mi módulo directamente en una instancia de Fargate.

Gran ventaja de esto. Use solo "Grupo de seguridad de clúster" para los nodos de Fargate.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!