Me cuesta mucho entender cómo es realmente la arquitectura de red de Kubernetes.
Como comprensión básica, "hay una máquina detrás de cada IP", pero con estas cosas de contenedores dentro de pods dentro de nodos dentro de un clúster alojado en algún lugar.
Agregar servicios, implementaciones y otros objetos de kubernetes lo hace aún más confuso. La documentación no es muy clara al respecto. Estoy perdido y tirando las manos al aire
¿Podría pedir una breve explicación de qué red está dentro de qué red y qué elementos tienen IP y/o puertos?
"hay una máquina detrás de cada IP"
No estoy seguro de qué IP estás hablando.
Hay múltiples componentes en Kubernetes si nos centramos en principal
Ahora, si hablamos de administrar el tráfico, funciona como
Ingreso > controlador de ingreso > Servicio > implementación > POD > Contenedor
Hay direcciones IP asignadas a cada POD (cargas de trabajo)
Pero no es útil en el caso normal, es administrado automáticamente por K8, nada que ver con eso.
será una IP interna, por lo que no podrá conectarse con la carga de trabajo de POD desde fuera de Kubernetes.
Ahora tenemos Tipo de Servicios
La IP del clúster vuelve a ser la misma IP interna administrada por Kubernetes.
El equilibrador de carga está expuesto a Internet, es como si estuviera adjuntando el LB a su carga de trabajo o aplicación, por lo que estará expuesto a Internet.
En este caso, obtendrá la IP externa abierta a Internet.
Esto fue como un arco interno.
Si hablamos de arquitectura de clúster simple
Hay nodo maestro y nodos de trabajo.
Los nodos de trabajo tienen una IP interna y externa basada en su clúster de Kubernetes privado o clúster de Kubernetes público.
Cada uno de sus contenedores o POD se ejecuta en un nodo de trabajo y tiene una IP interna en un escenario ideal.
Se pueden ejecutar múltiples cargas de trabajo o contenedores en una sola máquina o en un solo NODO de VM.
Los puertos se usan de la misma manera que los usamos generalmente.
Por ejemplo, este es mi servicio de prueba:
apiVersion: v1 kind: Service metadata: name: test labels: app: test spec: ports: - name: http port: 80 targetPort: 9595 - name: https port: 9595 targetPort: 9595 selector: app: test tier: frontend ha expuesto dos puertos, el 80 y el 9595. Si observa detenidamente, targetPort: 9595 hay un puerto de destino en ambos casos, está desviando el tráfico al puerto 9595 en el que se ejecutará mi contenedor o carga de trabajo.