Conceptos de redes para contenedores
Los contenedores son unidades aisladas de software que se ejecutan en un kernel de sistema operativo compartido (SO). Un contenedor empaqueta una aplicación con sus dependencias y lo abstrae del sistema operativo host donde se ejecuta. El resultado es un entorno de runtime ligero en el que las aplicaciones se pueden ejecutar y compartir fácilmente durante el desarrollo.
Un contenedor está aislado del sistema operativo host y de otros contenedores. Los adaptadores de red virtual conectados a conmutadores virtuales permiten que los contenedores se comuniquen entre sí y con redes externas.
Runtime del contenedor: Docker
En este módulo, examinamos las opciones de red para contenedores de Docker en Windows. Docker es una colección de herramientas de código abierto, soluciones y servicios basados en la nube que proporcionan un modelo común para empaquetar o contenedorizar, código de aplicación en una unidad estandarizada denominada contenedor de Docker. Los contenedores de Docker proporcionan características de seguridad para ejecutar varios contenedores simultáneamente en el mismo host sin que afecten unos a otros.
Aislamiento de contenedor con conmutadores virtuales
Los distintos tipos de conmutadores virtuales proporcionan distintos niveles de aislamiento y rendimiento para los contenedores. Un conmutador virtual interno no está conectado directamente a una NIC física en el host de contenedor, solo se conecta directamente un conmutador virtual externo.
Tres de los tipos de conmutador virtual más comunes son NAT, transparente y de superposición.
- Un contenedor con un conmutador virtual NAT usa la traducción de direcciones de red (NAT) para acceder a redes externas. El conmutador virtual NAT es fácil de configurar, pero limita la portabilidad y la escalabilidad del contenedor.
- Un conmutador virtual transparente permite que el contenedor se conecte directamente a la red física. Este conmutador virtual ofrece un alto rendimiento y flexibilidad, pero debe configurar manualmente las direcciones IP y las reglas de enrutamiento.
- El conmutador virtual de superposición crea una capa de red virtual sobre la red física. Obtiene la comunicación entre hosts y la segmentación de red para el contenedor, pero hay un aumento en la sobrecarga y la complejidad.
Administración de contenedores
Normalmente, los contenedores se consideran máquinas virtuales, pero debe tener en cuenta que no lo son. Un contenedor tiene un ciclo de vida distinto. Este se implementa, inicia, detiene y destruye según se solicite. Este ciclo de vida hace que los contenedores sean descartables y afectan a cómo los desarrolladores y los planes de operaciones de TI para la administración de implementaciones de contenedores grandes.
Complementos de interfaz de red de contenedor (CNI)
Para administrar la asignación y configuración de direcciones IP y adaptadores de red virtual para los contenedores, debe usar un complemento de interfaz de red de contenedor (CNI). Un complemento de CNI es un componente de software que implementa la especificación de CNI que define una manera estándar para que los orquestadores como Kubernetes interactúen con proveedores de red como Azure.
Hay diferentes complementos de CNI disponibles para contenedores de Windows, como:
- Los complementos CNI de WinNAT usan conmutadores virtuales NAT para las redes de contenedores. WinNAT es el complemento CNI predeterminado para Docker en Windows.
- Los complementos WinCNI usan conmutadores virtuales transparentes para las redes de contenedores. WinCNI es compatible con Kubernetes, pero requiere la administración manual de direcciones IP.
- Los complementos de Azure CNI usan conmutadores virtuales de superposición para redes de contenedores. Azure CNI se integra con Azure Virtual Network y proporciona características avanzadas, como directivas de red, detección de servicios y equilibrio de carga.
Contenedores y microservicios
Una aplicación de microservicios es un enfoque arquitectónico nativo de la nube en el que una sola aplicación consta de muchos componentes o servicios que se pueden implementar de forma flexible e independiente. Cada componente o servicio se puede representar mediante un contenedor.
Los contenedores no implementan necesariamente una arquitectura de microservicios. Pueden hospedar una aplicación monolítica, pero no están diseñadas para ese fin. De forma predeterminada, el runtime del contenedor (como Docker) y el orquestador de contenedores asumen que un contenedor siempre se puede eliminar o quitar de forma segura y otro contenedor puede tener su lugar según sea necesario.
Contenedores, Kubernetes y redes
El proceso de implementación, actualización, supervisión y eliminación de contenedores presenta muchos retos. En este módulo, examinaremos las soluciones de administración de contenedores para redes para contenedores de Windows con Kubernetes y Azure Kubernetes Service (AKS). Estas opciones admiten el uso de complementos de CNI para redes de contenedores.