Solicitar tiempo entre las cápsulas AKS

Tengo un grupo de Kubernetes dentro de Azure que tiene algunos servicios y cápsulas. Quiero que esas cápsulas se comuniquen entre sí pero cuando trate de ejecutar una CURL/WGET de uno a otro, se produce un tiempo fuera.

El servicio A continuación se pueden encontrar YAMLs:

Primer servicio:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: core-node
  name: core-node
spec:
  ports:
  - name: "9001"
    port: 9001
    targetPort: 8080
  selector:
    app: core-node
status:
  loadBalancer: {}

Segundo servicio:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: core-python
  name: core-python
spec:
  ports:
  - name: "9002"
    port: 9002
    targetPort: 8080
  selector:
    app: core-python
status:
  loadBalancer: {}

Cuando me estoy conectando a la cápsula "core-node" por ejemplo a través de sh y tratar de ejecutar el siguiente comando, se obtiene un timeout. Sucede también si intento la cápsula "core-python" al otro.

wget core-python:9002
wget: can't connect to remote host (some ip): Operation timed out

También intenté utilizar la IP directamente y también intentar cambiar de ClusterIP a LoadBalancerPero sucede lo mismo. Tengo una configuración proxy también, pero esto se hace principalmente en Ingresos nivel y no debe afectar la comunicación entre PODS a través de nombres de servicio, al menos por lo que sé. Los Pods están dentro corriendo estatus y sus API pueden accederse a través de las URL públicas expuestas a través de Ingress.

#EDIT1:

He conectado también a uno de los PODs y he comprobado si el puerto 8080 está escuchando y parece bien desde mi perspectiva.

netstat -nat | grep LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN    

#EDIT2:

Cuando hago un endpoints comprobar para este servicio, devuelve lo siguiente:

kubectl get ep core-node
NAME                  ENDPOINTS          AGE
core-node             10.x.x.x:8080      37m

Si intento wget este IP de la otra cápsula, responde:

wget 10.x.x.x:8080
Connecting to 10.x.x.x:8080 (10.x.x.x:8080)
wget: server returned error: HTTP/1.1 404 Not Found

Pregunta hecha hace 3 años, 5 meses, 5 días - Por devepicenter


2 Respuestas:

  • El error que estás experimentando al intentar comunicarte entre las cápsulas AKS puede deberse a algunos problemas comunes. Aquí hay algunas sugerencias para solucionar este problema:

    • Verificar la configuración de red: Asegúrate de que las cápsulas estén en la misma red dentro del clúster y que puedan comunicarse entre sí. Puedes comprobar la configuración de red en AKS para garantizar que no haya restricciones de red que estén causando el tiempo de espera.
    • Especificar el protocolo en la URL: Cuando realizas una solicitud con `wget`, es importante especificar el protocolo en la URL. Por ejemplo, puedes probar usando `wget http://core-python:9002`.
    • Verificar la configuración de los servicios: Revisa los YAML de los servicios para asegurarte de que los puertos y los selectores estén configurados correctamente. También verifica que los Pods estén etiquetados correctamente con los selectores especificados en los servicios.
    • Comprobar los endpoints: Si la comprobación de endpoints muestra la dirección IP correcta pero aún experimentas problemas, podría ser un problema con la configuración de los servicios o los pods. Asegúrate de que los endpoints estén correctamente asociados a las cápsulas correspondientes.
    • Habilitar el registro de eventos: Puedes habilitar el registro de eventos en Kubernetes para obtener más información sobre posibles problemas de comunicación entre las cápsulas. Los registros de eventos te pueden proporcionar pistas sobre lo que está causando el tiempo de espera.
    • Verificar la configuración del firewall: Si estás utilizando firewalls en Azure, asegúrate de que las reglas de firewall permitan la comunicación entre las cápsulas en los puertos especificados.
    • Consultar la documentación de Azure: Revisa la documentación oficial de Azure para obtener orientación específica sobre la configuración de comunicación entre cápsulas dentro de un clúster AKS.

    Intenta seguir estos pasos para investigar y solucionar el problema de tiempo de espera al comunicarte entre las cápsulas AKS. Si necesitas ayuda adicional, no dudes en preguntar.

    Respondida el Dec 18, 2020 a las 09:39 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles causas y soluciones:

    1. Política de red:

    Verifica que no haya políticas de red que bloqueen la comunicación entre las cápsulas. Ejecuta kubectl get netpol para listar políticas de red y comprueba si hay reglas que restrinjan el tráfico entre las cápsulas.

    2. Configuración del servicio:

    Asegúrate de que los puertos de destino en los servicios estén mapeados correctamente al puerto expuesto por las cápsulas. Verifica que el tipo de servicio sea ClusterIP o NodePort.

    3. Salud de la cápsula:

    Ejecuta kubectl get pods -o wide para comprobar el estado de las cápsulas. Asegúrate de que las cápsulas estén ejecutándose y que no haya errores.

    4. Problemas de firewall:

    Comprueba que no haya firewalls bloqueando la comunicación entre las cápsulas. Ejecuta nslookup core-node y nslookup core-python para resolver los nombres de servicio y verificar que se resuelven en las direcciones IP correctas.

    5. Rutas de red:

    Ejecuta kubectl exec -it <pod-name> -- nslookup core-python para verificar que las cápsulas puedan resolver los nombres de servicio. Comprueba que las rutas de red permitan la comunicación entre las cápsulas.

    Pasos adicionales:

    Intenta conectarte a la cápsula de destino directamente usando su dirección IP: wget <pod-ip>:<port>. Activa el registro de depuración en Kubernetes para obtener más información sobre la comunicación de red: kubectl logs -l k8s-app=kube-dns. * Verifica si hay conflictos de nombres de servicio.

    Respondida el Dec 18, 2020 a las 09:51 - por Gemini

    Votos positivos: 0 | Votos negativos: 0