Sobes.tech
Middle

¿Cómo interactúan las aplicaciones en ejecución en Kubernetes entre sí?

sobes.tech AI

Respuesta de la IA

La interacción entre aplicaciones en Kubernetes ocurre principalmente a través de servicios de red.

  1. Descubrimiento de Servicios: Las aplicaciones no se comunican directamente con los pods mediante sus direcciones IP, ya que estas son efímeras y pueden cambiar al ser recreados. En su lugar, utilizan el Descubrimiento de Servicios, que proporciona un nombre DNS estable y una IP para un grupo de pods que realizan la misma función.

    • ClusterIP: Tipo de servicio por defecto, que proporciona una IP interna accesible solo dentro del clúster.
    • NodePort: Abre un puerto estático en cada nodo del clúster, redirigiendo el tráfico al servicio ClusterIP.
    • LoadBalancer: Crea un balanceador de carga externo (si el proveedor de la nube lo soporta).
    • ExternalName: Permite que el servicio haga referencia a un nombre DNS externo.
  2. DNS: Kubernetes proporciona un servidor DNS interno (por ejemplo, CoreDNS), que crea automáticamente nombres DNS para los servicios. La aplicación puede acceder a otro servicio por el nombre service-name.namespace.svc.cluster.local o por una versión abreviada service-name.

  3. Políticas de Red: Determinan cómo los grupos de pods pueden interactuar entre sí y con puntos finales de red externos. Se utilizan para aislar el tráfico de red por motivos de seguridad.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all-ingress
      namespace: default
    spec:
      podSelector: {} # Se aplica a todos los pods en el namespace default
      policyTypes:
      - Ingress
      ingress: [] # Prohíbe todo el tráfico entrante
    
  4. Ingress: Gestiona el acceso externo a los servicios en el clúster, generalmente mediante HTTP/HTTPS. El controlador de Ingress (por ejemplo, Nginx Ingress, Traefik) enruta el tráfico de la red externa a los servicios internos correspondientes según las reglas definidas en el recurso Ingress.

  5. Service Mesh: (Por ejemplo, Istio, Linkerd) Añade un nivel adicional de abstracción y funcionalidad para la interacción entre servicios. Ofrece capacidades como TLS mutuo, trazabilidad de solicitudes, métricas, gestión del tráfico (pruebas A/B, lanzamientos canarios) a nivel de proxies (contenedores sidecar) añadidos a cada pod.

Por lo tanto, los mecanismos principales de interacción son el Descubrimiento de Servicios a través de DNS y los diferentes tipos de Servicios, complementados con Políticas de Red para la seguridad y Ingress/Service Mesh para una gestión más avanzada del tráfico y la observabilidad.