Cómo funcionan juntos los contenedores y los kubernetes

Cómo funcionan juntos los contenedores y los kubernetes

  • ITOps y DevOps
6 min de lectura Actualizado Jun 16, 2021

Puntos clave: Los contenedores mejoran la portabilidad y gestión de las aplicaciones, mientras que Kubernetes orquesta su despliegue y escalado. Juntos, agilizan el proceso de desarrollo.

  • Kubernetes ofrece funciones como balanceo de carga, auto-reparación y programación automática.
  • Los desarrolladores pueden gestionar eficientemente aplicaciones contenedorizadas en entornos diversos.

La contenedorización de aplicaciones se ha convertido en la norma en la industria de TI. Permite a organizaciones o desarrolladores encapsular el código de la aplicación y todas sus dependencias en un entorno portátil, de modo que la aplicación pueda desplegarse prácticamente en cualquier lugar.

Kubernetes están un potente servicio de orquestación de código abierto que puede usarse para gestionar contenedores en una aplicación contenedorizada.

En este artículo, profundizaremos en ambas tecnologías y Ve cómo se complementan.

Cómo funcionan los contenedores

Antes de aprender sobre los contenedores, primero necesitamos saber por qué se diseñaron los contenedores.

En el desarrollo tradicional de aplicaciones, una vez que una aplicación o servicio está desarrollado, el siguiente paso está desplegándolo, lo que puede ser un proceso complejo y que consume mucho tiempo. Esto se debe a que un despliegue exitoso requiere una multitud de configuraciones cuidadosas, desde la asignación de recursos y la gestión de dependencias hasta la configuración de variables ambientales.

Otra consideración están la portabilidad de la aplicación. Si el desarrollador necesita cambiar el entorno de despliegue o cambiar a un nuevo proveedor de nube, debe repasar todo el proceso de despliegue desde cero. De nuevo, esto es un proceso tedioso y que consume mucho tiempo y puede llevar a:

  • Derivas de configuración
  • Errores de producción

Los contenedores abordan con éxito este problema agrupando la base de código de la aplicación con todas las dependencias—como tiempo de ejecución, herramientas del sistema, archivos de configuración y librerías—en un paquete llamado contenedor. Esta contenedor crea un paquete ligero, seguro e inmutable conocido como imagen contenedor.

Esta imagen puede utilizarse para desplegar una aplicación contenedora en cualquier entorno, ofreciendo a los desarrolladores la libertad de desarrollar una aplicación sin preocuparse por las limitaciones ambientales.

Contenedores

Beneficios de los contenedores

Ventajas de los contenedores

A los desarrolladores les gustan los contenedores por diversas razones:

  • Entorno consistente. La contenedorización proporciona un entorno coherente al agrupar el código de la aplicación y las dependencias en un solo paquete. Esto garantiza la coherencia en los entornos de desarrollo, pruebas y producción.
  • Compatibilidad universal. Los contenedores pueden desplegarse prácticamente en cualquier lugar, desde Windows, Linux y macOS hasta proveedores de nube y centros de datos. Incluso los despliegues sin servidor soportan contenedores.
  • Portabilidad. El contenedor puede moverse fácilmente a un nuevo entorno con pocas o ninguna modificación, ya que todo el software y dependencias necesarias son empaquetados en un formato de contenedor estandarizado. (Facilita fácilmente escenarios de levantamiento y desplazamiento.)
  • Aislamiento. Los contenedores presentan un fuerte aislamiento frente a factores externos debido a su naturaleza contenedorizada y a su visión sandbox de los recursos subyacentes del sistema operativo (virtualización a nivel de sistema operativo), como CPU, memoria, almacenamiento y recursos de red.
  • Escalado. La naturaleza ligera de los contenedores contribuye a capacidades de escalado rápidas: los contenedores pueden crearse y destruirse fácilmente con recursos limitados para satisfacer la demanda del usuario.

Contenedores vs máquinas virtuales (VMs)

Los contenedores suenan mucho a máquinas virtuales. Ambos pueden usarse para Crea entornos aislados donde son desplegadas aplicaciones con todas las dependencias preconfiguradas.

Sin embargo, son diferencias fundamentales entre ambas tecnologías.

Máquinas virtuales

En su forma más sencilla, las VMs son diseñadas para virtualizar el hardware subyacente y ejecutar múltiples sistemas operativos en una sola máquina. Por ello, las VMs pueden ejecutar diferentes tipos de sistemas operativos en un entorno virtualizado (una sola máquina/servidor). Este enfoque compartido para utilizar hardware permite a las organizaciones gestionar los recursos físicos de hardware de forma eficiente y rentable.

Estructura del hardware de las máquinas virtuales
Estructura de las máquinas virtuales

Se está necesario un software llamado hipervisor para Crea y gestionar máquinas virtuales. Algunos tipos populares de hipervisores son:

El principal inconveniente al usar máquinas virtuales están su tamaño. Como cada máquina virtual contiene la imagen del sistema operativo, librerías, software, etc., pueden crecer rápidamente hasta tamaños grandes, resultando en:

  • Mantenimiento adicional
  • Problemas de escalabilidad

A diferencia de las máquinas virtuales, los contenedores virtualizan el sistema operativo subyacente. Como resultado, un contenedor puede considerar que todos los recursos del sistema operativo subyacente son disponibles para él.

Utilizar este enfoque compartido elimina la necesidad de alojar una imagen del sistema operativo separada en cada contenedor y arrancar en el sistema operativo para cargar las bibliotecas necesarias. Esto ofrece dos ventajas sobre las máquinas virtuales:

  • Reduce drásticamente el tamaño total de un contenedor en comparación con una máquina virtual
  • Permite desplegar un mayor número de contenedores en un solo servidor
Estructura de los contenedores
Estructura de los contenedores

Además, este enfoque compartido de contenedores Reduce las necesidades de mantenimiento: los desarrolladores solo necesitan actualizar y parchear el sistema operativo subyacente, no cada contenedor individual.

Los contenedores utilizan software llamado "tiempo de ejecución de contenedor" para ejecutar y gestionar contenedores. Algunos de los tiempos de ejecución de contenedores ampliamente utilizados son:

La principal desventaja de los contenedores están que son limitados al sistema operativo para el que son definidos. Solo pueden desplegarse en el sistema operativo definido, a diferencia de las máquinas virtuales donde los usuarios pueden ejecutar máquinas virtuales Windows en un servidor Linux basado en hipervisor y viceversa. Si un  contenedor están definido para Linux, solo puede desplegarse en Linux.

(Lee nuestra explicación detallada sobre contenedores frente a máquinas virtuales.)

Cómo Kubernetes gestiona los contenedores

Ahora sabemos qué son los contenedores. El siguiente paso lógico están gestionar los contenedores.

Para empezar: siempre podemos gestionar manualmente todos nuestros contenedores. Sin embargo, esto no están una solución escalable ni eficiente.

En su lugar, ¡podemos utilizar Kubernetes! Kubernetes, también conocido como K8s, es una plataforma de orquestación de contenedores de código abierto para desplegar, gestionar y escalar fácilmente aplicaciones contenedidas.

(Explora nuestra completa serie de tutoriales de Kubernetes.)

Estructura de Kubernetes

Kubernetes están la solución ideal para escalar aplicaciones contenecerizadas de un solo servidor a un despliegue multiservidor. Este tipo de enfoque distribuido multiservidor están conocido como clúster Kubernetes.

Kubernetes obtiene contenedores y distribuye la aplicación según la disponibilidad de recursos entre diferentes servidores (Nodos). La aplicación se mostrará como una sola entidad a los usuarios finales; sin embargo, en realidad puede ser un grupo de contenedores débilmente acoplados que funcionan en múltiples nodos.

Kubernetes también ofrece soporte integrado para aplicaciones contenedorizadas, incluyendo:

Componentes principales de Kubernetes

Kubernetes consta de los siguientes componentes principales:

  • Plano de control
  • Nodos
  • Cápsulas

El plano de control es el cerebro del clúster Kubernetes, gestionando todo, desde la programación hasta los eventos del clúster. El plano de control consta de diferentes componentes, como:

  • kube-apiserver, que gestiona el servicio API
  • Kube-scheduler, que gestiona el despliegue de pods en nodos correspondientes
  • Y más

Los componentes del plano de control pueden ejecutarse en cualquier nodo dentro del clúster. La práctica estándar está asociando una única instancia para las tareas del plano de control.

El siguiente componente son los nodos. Los nodos son esencialmente extremos o máquinas de un clúster Kubernetes. Son los lugares donde los contenedores se Obtén en Kubernetes. Los nodos son responsables de proporcionar el entorno de ejecución para los contenedores.

Los nodos consisten en diferentes componentes como:

  • Kube-proxy para mantener las rutas de red
  • Kubelet para gestionar y supervisar el estado de los contenedores

El componente esencial final están el pod. Los pods son un envoltorio lógico para un contenedor. (Los pods son también el componente desplegable más pequeño en Kubernetes.) Un Pod K8s se refiere a:

  • Un solo recipiente
  • Múltiples contenedores agrupados con recursos compartidos (redes, almacenamiento, etc.)

Los contenedores dentro de un pod son fuertemente acoplados y son esenciales para la funcionalidad principal de la aplicación contenedorizada.

Para resumir cómo funcionan juntos estos tres componentes: El plano de control distribuye estos pods a los nodos de un clúster Kubernetes dependiendo de:

  • Disponibilidad de recursos
  • Carga de aplicación

Despliegue básico de Kubernetes

En un despliegue sencillo de Kubernetes, habrá un servidor dedicado para el plano de control (Master Node) para gestionar todo el clúster. Los controladores dentro del plano de control gestionarán todos los nodos y servicios dentro del clúster. Además, también se encargarán de la planificación, el servicio API y la gestión del estado usando etcd.

Otros servidores o nodos actúan como trabajadores (Nodos Trabajadores), proporcionando el entorno de ejecución y ejecutando los contenedores (Pods Kubernetes). El Pod Kubernetes envolverá un contenedor o varios contenedores para Crea una sola entidad y facilitar la asignación, gestión y escalado de recursos.

(Entiende cómo funcionan los despliegues de Kubernetes.)

Trabajo de despliegue de Kubernotes

Kubernetes frente a tiempos de ejecución normales de contenedores

Lo que realmente diferencia a Kubernetes de los tiempos de ejecución normales de contenedores son las características que ofrece sobre los contenedores. Algunas de esas características son:

  • Balanceo de carga. Crea balanceadores de carga y distribuye el tráfico entre los pods disponibles.
  • Programación automática. Distribuir automáticamente los pods en el nodo más apropiado para un rendimiento óptimo.
  • Escalado horizontal. Escala rápidamente los pods hacia arriba o hacia abajo para satisfacer las demandas de la aplicación.
  • Auto-curación. Todos son monitoreados constantemente y se reinician o reemplazan automáticamente en caso de fallo.
  • Despliegues. Kubernetes facilita despliegues y retrocesos gestionados para desplegar fácilmente aplicaciones conteneorizadas utilizando diferentes estrategias de despliegue.

Uso de contenedores y Kubernetes

Los contenedores y los Kubernetes son dos tecnologías que van de la mano.

Como desarrollador, la forma más sencilla de adaptarse a ellos están:

  1. Crea aplicaciones contenedorizadas con compatibilidad multiplataforma como paquetes aislados y portátiles.
  2. Utiliza la robusta y rica en funciones plataforma Kubernetes para orquestar esas aplicaciones contenedorizadas.

Esto significa esencialmente que los desarrolladores pueden mantener fácilmente la aplicación como un contenedor en un clúster Kubernetes durante todo el ciclo de vida de la aplicación, desde el desarrollo hasta el despliegue y el mantenimiento.

A medida que cada tecnología complementa a la otra, combinar las fortalezas de ambas tecnologías conducirá a procesos de desarrollo y despliegue más cómodos, cortos y menos complejos.

Los clústeres de Kubernetes son soportados por todos los principales proveedores de nube o despliegues locales. Así, te puede simplemente poner en marcha un clúster y desplegar la aplicación con solo unos pocos comandos, mientras Kubernetes se encarga de la mayor parte de las tareas tediosas y que consumen mucho tiempo (balanceo de carga, escalado, etc.) Las funciones integradas de Kubernetes Permite gestiona toda la aplicación sin depender de otras herramientas o servicios externos.

Aumento de la agilidad de los desarrolladores

Los contenedores y Kubernetes son tecnologías modernas diseñadas para Reduce la carga de trabajo de un desarrollador o del equipo de entrega. Los contenedores ofrecen una forma estandarizada de empaquetar aplicaciones y Kubernetes te ayuda a gestionarlas fácilmente.

Ahora que te comprendido los conceptos básicos de contenedores y Kubernetes, el siguiente paso están explorar estos conceptos para Crea tu aplicación contenedora perfecta. Comienza con nuestra serie de tutoriales de Kubernetes.

Lecturas relacionadas

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.