Incapaz de alcanzar el despliegue del balanceador de carga creado en EKS

Soy nuevo en EKS (pero familiarizado con k8s), y estoy tratando de ejecutar mi proyecto en EKS.

Corrí el despliegue de mi proyecto y el despliegue de db, y ambos se están ejecutando:

kubectl get deploy -owide
NAME   READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES             SELECTOR
my-app   1/1     1            1           98m   my-app         me/my-app:latest   app=my-app
db     1/1     1            1           16h   db           mariadb:10.4.12    app=db

Y he creado cargador para llegar a las cápsulas de mi aplicación:

get svc -owide
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)          AGE    SELECTOR
my-app         LoadBalancer   10.102.XXX.XXX   XXX-XXX.us-east-1.elb.amazonaws.com   8000:31722/TCP   114m   app=my-app
kubernetes   ClusterIP      10.102.0.1                                                                           443/TCP          39h    

Traté de llegar a la página web a través del ip externo creado por el loadbalancer (XXX-XXX.us-east-1.elb.amazonaws.com), con el puerto (He probado 80, 8000 y 31722), y tengo "el sitio no se puede alcanzar".

¿Me pierdo algo?

Este es el servicio de mi solicitud:

apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  type: LoadBalancer
  ports:
  - name: "8000"
    port: 8000
    targetPort: 8000
  selector:
    app: my-app

Este es el yaml de mi aplicación:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
  labels:
    app: my-app
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - env:
        - name: REVERSE_PROXY
          value: "true"
        - name: UPLOAD_FOLDER
          value: /var/uploads
        - name: WORKERS
          value: "1"
        image: me/my-app:latest
        imagePullPolicy: ""
        name: my-app
        ports:
        - containerPort: 8000
        resources: {}
      restartPolicy: Always
      serviceAccountName: ""

Pregunta hecha hace 3 años, 4 meses, 27 días - Por algorithmalchemist


3 Respuestas:

  • Sugiero seguir pasos para encontrar la causa raíz;

    1. Compruebe si el dominio XXX-XXX.us-east-1.elb.amazonaws.com es accesible desde el host/machine que está tratando de acceder. Puede utilizar el comando ping para comprobar la posibilidad de llegar a la red desde su host/machine/laptop/desktop.

    2. Si el paso 1 se ejecuta con éxito, consulte métricas predeterminadas de reloj de nube para su balanceador de carga. Por favor. esto documento sobre ver métricas de reloj de nube a través de la consola web AWS. Usted puede comprobar cualquier error inutilizable cuenta en esta métrica.

    3. Si no encontró ninguna información útil en el Paso2 y si ha habilitado VPC Flow Logs, entonces puede rastrear los registros de flujo vpc para comprobar, cuál es el problema con el tráfico de red a " desde el balanceador de carga AWS. Para información de los registros de flujo VPC, consulte esto documento de AWS.

    Respondida el Dec 18, 2020 a las 13:33 - por scriptsorcerer

    Votos positivos: 0 | Votos negativos: 0

  • El problema podría estar en la configuración de tu servicio y en cómo estás intentando acceder a tu aplicación. Aquí hay algunas cosas que podrías probar para solucionar el problema:

    • En primer lugar, asegúrate de que el puerto correcto esté expuesto en tu servicio. En la definición de tu servicio, estás exponiendo el puerto 8000, por lo tanto, al acceder a tu aplicación a través del load balancer, deberías intentar usar el puerto 8000.
    • También es importante tener en cuenta que los balanceadores de carga en AWS pueden tardar un tiempo en provisionarse por completo y en enrutar el tráfico a tus pods. Espera unos minutos después de crear el servicio para asegurarte de que el balanceador de carga está completamente funcionando.
    • En tu servicio, el selector especificado debe coincidir con las etiquetas de tus pods. En tu caso, el selector `app: my-app` debería coincidir con la etiqueta `app: my-app` en la definición de tu deployment.
    • Para obtener más información sobre lo que está sucediendo, puedes revisar los eventos de tu servicio y del balanceador de carga en AWS a través de la consola de EKS o usando el comando `kubectl describe svc my-app`.
    • Intenta acceder a tu aplicación usando el siguiente formato: `http://XXX-XXX.us-east-1.elb.amazonaws.com:8000`.

    Si después de revisar estos puntos sigues sin poder acceder a tu aplicación, revisa los logs de tus pods y del balanceador de carga para obtener más información sobre posibles errores que puedan estar ocurriendo.

    Respondida el Dec 19, 2020 a las 13:35 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Parece que has configurado correctamente el servicio y el despliegue en EKS. Sin embargo, el problema puede estar relacionado con la configuración de seguridad o con la configuración de la red en tu clúster de EKS. Aquí tienes algunas cosas que puedes comprobar:

    • Comprueba el grupo de seguridad del balanceador de carga: Asegúrate de que el grupo de seguridad asociado al balanceador de carga permite el tráfico desde Internet en el puerto 8000.
    • Comprueba el enrutamiento de la red: Asegúrate de que la VPC (Virtual Private Cloud) donde se ejecuta tu clúster de EKS está conectada a una subred de Internet. Esto permitirá que el balanceador de carga reciba tráfico desde Internet.
    • Comprueba la dirección IP externa: Intenta acceder a tu aplicación utilizando la dirección IP externa completa, que incluye el nombre de dominio y el protocolo, como por ejemplo: `http://XXX-XXX.us-east-1.elb.amazonaws.com:8000`.
    • Comprueba el firewall de las instancias: Asegúrate de que el firewall de las instancias que ejecutan los pods de tu aplicación permite el tráfico en el puerto 8000.
    • Comprueba los registros de los pods: Examina los registros de los pods de tu aplicación para ver si hay algún error o advertencia que pueda indicar un problema con la conectividad o la configuración de la red.
    • Vuelve a implementar el servicio: Intenta volver a implementar el servicio para asegurarte de que se crea correctamente.
    • Reinicia el balanceador de carga: Intenta reiniciar el balanceador de carga para ver si eso resuelve el problema.

    Si ninguno de estos pasos resuelve el problema, puedes intentar lo siguiente:

    Habilitar el registro de depuración para el controlador del balanceador de carga: Esto te proporcionará más información sobre el comportamiento del balanceador de carga y puede ayudar a identificar cualquier problema de configuración. Revisa los eventos y mensajes de error en el clúster de EKS: Esto puede proporcionar información sobre cualquier problema subyacente que pueda estar causando el problema. Ponte en contacto con el soporte de AWS:* Si no puedes resolver el problema por tu cuenta, puedes ponerte en contacto con el soporte de AWS para obtener asistencia adicional.

    Respondida el Dec 19, 2020 a las 13:35 - por Gemini

    Votos positivos: 0 | Votos negativos: 0