Redes en Kubernetes
Para entender las redes en Kubernetes empezaremos viendo un clúster de Kubernetes de un solo nodo. El nodo tiene una dirección IP, digamos que es 192.168.1.2. Esta es la dirección IP que usamos para acceder al nodo Kubernetes con ssh, etc. Recuerde que si está utilizando una configuración de miniKube, esa es la dirección IP de la máquina virtual de miniKube dentro de su Hipervisor. El ordenador donde se ejecuta tendrá una dirección IP diferente, algo como 192.168.1.10. Por lo tanto, es importante comprender cómo están configuradas las máquinas virtuales.
En el clúster de kubernets de un solo nodo, hemos creado un solo POD. El POD aloja un contenedor. A diferencia del mundo Docker, donde siempre se asigna una dirección IP a un contenedor, en el mundo de los Kubernetes la dirección IP se asigna a un POD, por lo que cada POD en Kubernetes obtiene su propia dirección IP interna.
Cuando Kubernetes se configura inicialmente, se crea una red privada interna con una dirección, por ejemplo 10.244.0.0 y todos los PODs están unidos a ella. Cuando implementa varios PODs, todos obtienen una IP separada asignada desde esta red. Los PODs pueden comunicarse entre sí a través de estas IP, pero el acceso al otro POD usando esta dirección IP interna puede no ser una buena idea, ya que está sujeto a cambios cuando se recrean los PODs. Es fácil y simple de entender cuando se trata de redes en un solo nodo.
Varios nodos
Si tenemos dos nodos ejecutando Kubernetes y tienen direcciones IP 192.168.1.2 y 192.168.1.3 asignados a ellos. Hay que tener en cuenta que no son parte del clúster todavía, pero cada uno de ellos tiene un solo POD desplegado. Estos PODs están conectados a una red interna y tienen sus propias direcciones IP asignadas. Si se observan las direcciones de red internas, puede ver que sean las mismas, por ejemplo 10.244.0.0 y los módulos desplegados también tienen la misma dirección. Esto no funcionará bien con los nodos que forman parte del mismo clúster, ya que los PODs tienen las mismas direcciones IP asignadas y eso generará conflictos de IP en la red. Ahora bien, ese es un problema para cuando el clúster de Kubernetes esté configurado.
Soluciones ya implementadas
Afortunadamente, no tenemos que configurarlo por nuestra cuenta, ya que hay múltiples soluciones preconstruidas disponibles. Algunos de ellos son las redes Cisco SCI, Cilium, Flannel, WMWare NSX T y Kaliko. Dependiendo de la plataforma en la que se esté implementando el clúster de Kubernetes, puede usar una de esas soluciones.
Para ver la información de las IPs asignadas se puede usar el comando «kubectl get pods -o wide».
Más información: https://kubernetes.io/docs/concepts/cluster-administration/networking/