El libro "Mastering Kubernetes. Orquestación de arquitecturas de contenedores "

imagen Hola habrozhiteli! Recientemente publicamos un libro sobre Kubernetes versión 1.10. La publicación revisó el pasaje "Soluciones de red para Kubernetes"

La creación de redes es un tema extenso. Hay muchas formas de configurar una red con dispositivos, hogares y contenedores. Kubernetes no te limita a esto. Todo lo que esta plataforma prescribe es un modelo de red de alto nivel con un espacio de direcciones plano para hogares. Dentro de este espacio, puede implementar muchas buenas soluciones con diferentes capacidades y para diferentes entornos. En esta sección, veremos algunos de ellos e intentaremos comprender cómo encajan en el modelo de red de Kubernetes.

Crear puentes en grupos de hardware


El entorno m√°s simple es un cl√ļster desnudo, que es una red f√≠sica normal de nivel L2. Para conectar contenedores a dicha red, puede usar el puente Linux est√°ndar. Este es un procedimiento bastante laborioso que requiere experiencia con comandos de red Linux de bajo nivel, como brctl, ip addr, ip route, ip link, nsenter, etc. Puede comenzar a implementar dicha soluci√≥n leyendo la siguiente gu√≠a: blog.oddbit.com/
2014/08/11 / four-ways-to-connect-a-docker / (busque la sección Con dispositivos con puente de Linux).

Contiv


Contiv es un complemento de red de uso general. Est√° dise√Īado para conectar contenedores a trav√©s de CNI y puede usarse con Docker (directamente), Mesos, Docker Swarm y, naturalmente, Kubernetes. Contiv se ocupa de las pol√≠ticas de red y duplica parcialmente un objeto similar en Kubernetes. Las siguientes son algunas de las caracter√≠sticas de este complemento de red:

  • soporte para CNM en libnetwork y la especificaci√≥n CNI;
  • Un motor de pol√≠ticas rico en funciones que proporciona seguridad e implementaci√≥n de aplicaciones predecible.
  • el mejor rendimiento de contenedor de su clase;
  • multipropiedad, aislamiento y subredes superpuestas;
  • Integraci√≥n de IPAM y descubrimiento de servicios;
  • Amplia selecci√≥n de topolog√≠as f√≠sicas:

    a) protocolos de capa 2 (VLAN);
    b) protocolos de capa 3 (BGP);
    c) redes superpuestas;
    d) Cisco SDN (ACI);
  • Soporte IPv6;
  • pol√≠tica escalable y asignaci√≥n de ruta;
  • Integraci√≥n con plantillas de aplicaciones, incluidas las siguientes:

    a) Docker-componer;
    b) gestor de despliegue de Kubernetes;
    c) equilibrio de carga en servicios, integrado en el equilibrador de microservicios del tipo "este - oeste" (este - oeste);
    d) aislamiento del tráfico durante el almacenamiento, control de acceso (por ejemplo, etcd / cónsul), transmisión y gestión de la red.

Contiv tiene muchas características. Esta herramienta implementa una amplia gama de tareas y admite varias plataformas, por lo que no estoy seguro de si será la mejor opción para Kubernetes.

Abra vswitch


Open vSwitch es una solución madura para crear conmutadores virtuales (software), con el apoyo de muchos jugadores importantes en el mercado. El sistema Open Virtualization Network (OVN) le permite construir varias topologías de red virtual. Tiene un complemento especial para Kubernetes, pero es muy difícil de configurar (consulte el manual github.com/openvswitch/ovn-kubernetes ). El complemento Linen CNI tiene menos funciones, pero su configuración es mucho más fácil: github.com/John-Lin/linen-cni . La estructura CNI de lino se muestra en la Fig. 10.6

imagen

Open vSwitch puede integrar servidores f√≠sicos, m√°quinas virtuales y pods / contenedores en una √ļnica red l√≥gica. Este sistema admite modos de superposici√≥n y f√≠sicos.

Estas son algunas de sus características clave:

  • VLAN 802.1Q est√°ndar con troncales y puertos p√ļblicos
  • NIC vinculante con o sin LACP para un interruptor de nivel superior
  • NetFlow, sFlow¬ģ y espejo para una mejor visibilidad;
  • Configuraci√≥n de QoS (calidad de servicio) m√°s pol√≠ticas;
  • tunelizaci√≥n a trav√©s de Geneve, GRE, VXLAN, STT y LISP;
  • romper el control en 802.1ag;
  • OpenFlow 1.0 m√°s numerosos complementos;
  • base de datos transaccional para almacenar la configuraci√≥n con enlaces para C y Python;
  • redirecci√≥n de alto rendimiento utilizando m√≥dulos de kernel de Linux.

Nuage Networks VCS


Virtualized Cloud Services (VCS) es un producto de Nuage, que es una plataforma escalable y basada en políticas para construir redes definidas por software (Networking Defined Software, SDN). Esta es una solución de nivel empresarial, que se basa en el sistema abierto Open vSwitch (para la redirección de datos) y un controlador SDN multifuncional basado en estándares abiertos.

La plataforma Nuage combina pods de Kubernetes y entornos de terceros (virtuales y hardware) en redes de superposición transparentes y le permite describir políticas detalladas para diferentes aplicaciones. Su motor de análisis en tiempo real le permite controlar la visibilidad y la seguridad de las aplicaciones de Kubernetes.

Además, todos los componentes de VCS se pueden instalar como contenedores. No hay requisitos de hardware específicos.

Canal


Canal es una mezcla de dos proyectos de código abierto: Calico y Flannel. De ahí el nombre. El proyecto Flannel, desarrollado por el equipo CoreOS, se ocupa de las capacidades de red de los contenedores, mientras que Calico es responsable de las políticas de red. Inicialmente, se desarrollaron por separado, pero los usuarios querían usarlos juntos. El proyecto de código abierto de Canal ahora es una plantilla de implementación para instalar Calico y Flannel como complementos CNI separados. Creado por los fundadores de Calico, Tigera ha apoyado ambos proyectos e incluso planeó una integración más estrecha, pero desde que lanzó su propia solución para redes seguras entre aplicaciones en Kubernetes, la prioridad se ha desplazado hacia la simplificación de la configuración e integración de Flannel y Calico en lugar de desarrollar una solución unificada. En la fig. 10.7 muestra el estado actual del sistema del Canal y cómo se relaciona con las plataformas de orquestación como Kubernetes y Mesos.

imagen

Tenga en cuenta que cuando se integra con Kubernetes, Canal no accede a etcd directamente, sino al servidor API de Kubernetes.

Franela


Flannel es una red virtual que proporciona a cada nodo una red virtual para trabajar con tiempos de ejecuci√≥n de contenedor. En cada nodo, se inicia el agente flaneld, elevando la subred en funci√≥n del espacio de direcciones reservado almacenado en el cl√ļster etcd. El intercambio de paquetes entre contenedores y, en general, el nodo lo realiza uno de varios servidores. Muy a menudo, el servidor usa UDP sobre el dispositivo TUN, que de forma predeterminada canaliza el tr√°fico a trav√©s del puerto 8285 (no olvide abrirlo en su firewall).

En la fig. 10.8 describe en detalle los diversos componentes de la red Flannel, los dispositivos de red virtuales que crea y cómo se comunican con el host y el hogar a través del puente docker0. Aquí también puede ver el proceso de encapsulación de paquetes UDP y su movimiento entre nodos.

imagen

Se admiten otras tecnologías de red:

  • vxlan - encapsula paquetes usando VXLAN dentro del kernel;
  • host-gw: crea rutas IP a subredes a trav√©s de las direcciones IP del servidor remoto. Vale la pena se√Īalar que esto requiere una conexi√≥n directa en la segunda capa de red entre los servidores que ejecutan Flannel;
  • aws-vpc: crea rutas IP en la tabla de enrutamiento de Amazon VPC
  • gce: crea rutas IP en la red de Google Compute Engine
  • alloc: realiza solo la selecci√≥n de la subred, pero no la redirecci√≥n de paquetes;
  • ali-vpc: crea rutas IP en la tabla de enrutamiento VPC de Alicloud.

Proyecto Calico


Calico es una solución completa para redes entre contenedores y seguridad de red. Se puede integrar con todas las principales plataformas de orquestación y tiempos de ejecución:

  • Kubernetes (complemento para CNI);
  • Mesos (complemento para CNI);
  • Docker (complemento para libnework);
  • OpenStack (complemento para Neutron).

Calico tambi√©n se puede implementar localmente o en una nube p√ļblica mientras se conservan todas las funciones. La aplicaci√≥n de pol√≠ticas de red puede depender de la carga, lo que proporciona un control claro del tr√°fico y garantiza que los paquetes siempre lleguen a los destinos deseados. Calico puede importar autom√°ticamente pol√≠ticas de red desde plataformas de orquestaci√≥n. De hecho, es responsable de implementar pol√≠ticas de red en Kubernetes.

Romana


Romana es una soluci√≥n moderna para la creaci√≥n de redes entre contenedores. Originalmente fue dise√Īado para su uso en la nube y opera en la tercera capa de red, bas√°ndose en m√©todos est√°ndar para administrar direcciones IP. Romana le permite aislar redes enteras mediante la creaci√≥n de puertas de enlace y rutas para ellos utilizando servidores basados ‚Äč‚Äčen Linux. El trabajo en la tercera capa de red no requiere encapsulaci√≥n. La pol√≠tica de red se aplica a todos los puntos finales y servicios como un firewall distribuido. Romana facilita las implementaciones locales e h√≠bridas entre diferentes plataformas en la nube, ya que ya no necesita configurar redes de superposici√≥n virtual.

Recientemente aparecido en Romana, las direcciones IP virtuales permiten a los usuarios locales abrir el acceso a sus servicios en redes locales del segundo nivel, utilizando direcciones externas y especificaciones de servicio.

Los desarrolladores de Romana afirman que su enfoque mejora significativamente el rendimiento. En la fig. La Figura 10.9 muestra cómo, junto con evitar la encapsulación de VXLAN, puede eliminar una gran cantidad de sobrecarga.

imagen

Tejido de red


Las características principales del proyecto Weave Net son la facilidad de uso y la falta de configuración. Utiliza la encapsulación VXLAN e instala micro-DNS en cada nodo. Como desarrollador, se enfrentará a un alto nivel de abstracción. Después de nombrar sus contenedores, Weave Net le permitirá conectarse a puertos estándar y habilitar los servicios apropiados. Esto ayuda en la migración de aplicaciones existentes a plataformas de microservicio y contenedorización. Weave Net proporciona un complemento CNI para trabajar con Kubernetes y Mesos. Comenzando con Kubernetes 1.4, la integración con Weave Net se puede lograr con un solo comando que implementa DaemonSet:

kubectl apply -f https://git.io/weave-kube 

Los pods Weave Net alojados en cada nodo son responsables de conectar cualquier otra instancia de pod a la red Weave. Weave Net admite API con políticas de red, proporcionando una solución completa y fácil de configurar.

Uso efectivo de las políticas de red.


La pol√≠tica de red de Kubernetes est√° dise√Īada para controlar el tr√°fico que se dirige a pods y espacios de nombres espec√≠ficos. Cuando se administran cientos de microservicios implementados (como suele ser el caso con Kubernetes), las redes entre los hogares se destacan. Es importante comprender que este mecanismo solo est√° relacionado indirectamente con la seguridad. Si un atacante puede penetrar en la red interna, lo m√°s probable es que pueda crear su propia instancia del hogar que cumpla con la pol√≠tica de red y permita la comunicaci√≥n gratuita con otros hogares. En la secci√≥n anterior, analizamos varias soluciones de red en Kubernetes, centr√°ndonos en las interfaces de red. Aqu√≠ nos centraremos en la pol√≠tica de red implementada sobre estas soluciones, aunque ambos componentes est√°n estrechamente interconectados.

Arquitectura de políticas de red en Kubernetes


La política de red determina cómo los subconjuntos de hogares pueden interactuar entre sí y con otros puntos finales de la red. El recurso NetworkPolicy utiliza etiquetas para seleccionar hogares y define una lista de reglas de permisos que permiten que el tráfico se dirija a instancias de hogares seleccionadas (además de lo que ya está permitido por la política de aislamiento en el espacio de nombres dado).

¬ĽSe puede encontrar m√°s informaci√≥n sobre el libro en el sitio web del editor
¬Ľ Contenidos
¬Ľ Extracto

Cupón de 20% de descuento para Khabrozhitel - Kubernetes

Tras el pago de la versión en papel del libro, se envía una versión electrónica del libro por correo electrónico.

PD: el 7% del costo del libro se destinará a la traducción de nuevos libros de computadora, la lista de libros entregados a la imprenta está aquí .

Source: https://habr.com/ru/post/441910/


All Articles