La Red de Conocimientos Pedagógicos - Currículum vitae - La práctica de cilio en el clúster de Kubernetes y su análisis de comunicación en red.

La práctica de cilio en el clúster de Kubernetes y su análisis de comunicación en red.

Cilium es un proyecto de código abierto basado en eBPF y XDP, una solución de red de contenedores de alto rendimiento. El objetivo es proporcionar funciones de red, equilibrio de carga y seguridad para entornos de microservicios. plataforma de contenedores.

¿Por qué Cilium?

Ahora el desarrollo de servicios de aplicaciones ha cambiado de una estructura monolítica a una arquitectura de microservicios. La comunicación entre microservicios generalmente utiliza /cilium/hubble. > hubble es una plataforma de visibilidad de seguridad y red totalmente distribuida para cargas de trabajo nativas de la nube. Está construido sobre Cilium y eBPF para proporcionar una visibilidad profunda de la comunicación y el comportamiento de los servicios, así como de la infraestructura de red con total transparencia.

hubble monitorea la información del caso de prueba instalado anteriormente

Después de instalar cilio en el clúster de kubernetes, aquí exploraremos el método de comunicación vxlan entre pods en diferentes nodos.

Después de instalar cilium, el agente de cilium creará un quinto par de cilium_net y cilium_host en el nodo y cilium_vxlan para la comunicación entre hosts, y luego configurará la IP CIDR que administra en cilium_host como puerta de enlace.

Como se muestra en la figura anterior, la ruta de comunicación entre el Contenedor A y el Contenedor B se analiza mediante la captura de paquetes.

Contenedor A hace ping al Contenedor B (en adelante, Contenedor A -gt; CA, Contenedor B -gt; CB)

Ingrese la CA en el Nodo01 (10.244.1.154), haga ping Dirección IP de CB 10.224.6.11

Ingrese al contenedor del agente cilium en Node01 y vea la información del contenedor CA como punto final de cilium

Los paquetes icmp a los que hace ping el contenedor CA se enrutarán a través de la tarjeta de red lxc8b528e748ff4 (lxcxxA) A la puerta de enlace cilium_host, el método de enrutamiento es diferente del reenvío tradicional a través de un dispositivo de segunda capa como el puente Linux. Cilium adjunta un programa bpf a la tarjeta de red virtual asociada con cada contenedor, a través de bpf conectado. al gancho de entrada TC (control de tráfico) El programa enruta todo el tráfico de la red al dispositivo virtual del lado del host, de modo que cilio pueda monitorear y aplicar políticas sobre todo el tráfico que entra y sale del nodo, como networkPolicy, política L7, cifrado y otras reglas dentro del grupo.

Para enrutar el tráfico en el contenedor CA al contenedor CB a través de los nodos host, se requiere el dispositivo VTEP cilium_vxlan para encapsular los paquetes de tráfico y reenviarlos al Nodo02.

El programa bpf consultará las reglas del túnel y enviará el tráfico a cilium_vxlan. Puede ver las reglas del túnel de bpf en el contenedor del agente cilium

Capture el paquete cilium_vxlan en Node01 y podrá ver que el contenedor CA tiene. pasó el paquete icmp cilium_vxlan

Luego capture el paquete eth0 en el Nodo01 y podrá ver que cilium_vxlan ha empaquetado con vxlan el tráfico de CA, cambió la IP del src a la IP del nodo local 192.168.66.226 y cambió la dirección IP. dst ip a 192.168.66.221

Capture los paquetes de eth0 en Node02 y podrá ver que los paquetes de tráfico del contenedor CA se han enviado a Node02.

Capture los paquetes de cilium_vxlan, y puede ver que los paquetes de tráfico del contenedor CA han sido decodificados. Sellado

En este punto, el tráfico del contenedor CA ha llegado a la tarjeta de red virtual creada por cilium.

Sabemos que el kernel de Linux se basa fundamentalmente en eventos. Cuando la tarjeta de red virtual creada por cilium recibe un paquete de tráfico, activará la conexión al gancho de entrada TC (control de tráfico). realiza procesamiento de políticas relevantes en paquetes de tráfico.

Verifique la ruta de datos de entrada/salida oficial proporcionada por cilio para verificar aproximadamente la ruta de comunicación de la red de cilio anterior.

La primera es la ruta de datos de salida. La etiqueta naranja en la imagen es el componente cilio. Allí está el programa bpf creado por cilio en el host (correspondiente al gancho bpf del núcleo con la etiqueta roja). Si utiliza la política L7, también hay reglas de iptables creadas por cilio. El tráfico comienza desde un punto final del contenedor a través de la tarjeta de red del quinto par lxcxxx en el contenedor, lo que activará el programa bpf_sockops.c / bpf_redir.c. Si se utiliza la política L7, ingresará al espacio de usuario para el procesamiento de datos de la capa L7. L7 no está habilitado La política activará el enlace de salida de TC, bpf_lxc procesará los datos (si el cifrado L3 está habilitado, se activarán otros enlaces bpf), los datos eventualmente se enrutarán a la puerta de enlace cilium_hos t y luego los datos se enviado de acuerdo con el modo de superposición (vxlan, etc.).

En la ruta de datos de ingreso de Cilium, el tráfico de datos ingresa al dispositivo de red host. Cilium puede preprocesar el tráfico de datos (prefiltro/cifrado L3/descifrado/equilibrio de carga/procesamiento de políticas L7) o enrutarlo directamente de acuerdo con lo relevante. configuración Vaya a cilium_host para activar el programa bpf correspondiente y luego al punto final.