Blog

Kubernetes: La diferencia entre Containers y Virtual Machines (VM)

 

Si está involucrado de forma remota en la tecnología, es probable que haya oído hablar de Kubernetes.

Hay ciclos en la tecnología y, en particular, en el ecosistema de código abierto que son realmente profundos y cambiantes, y Kubernetes es uno de estos proyectos; además de tener una de las comunidades más entusiastas.

¿Qué es Kubernetes?

Bueno, resulta que no hay una respuesta corta. De hecho, originalmente se suponía que era una única publicación de blog, que realizó Patrick Galbraith, pero cuando terminó tenía más de 3,000 palabras, por lo que decidió dividirla en una serie. Él mismo nos explica las diferencias entre una virtual machine y un container, lo cual considera fundamental para empezar a entender los Kubernetes.

Hablando de Kubernetes, uno puede comenzar con la descripción en el sitio web del proyecto como un buen lugar para empezar: “Kubernetes es un sistema de código abierto para automatizar la implementación, escala y la administración de aplicaciones en containers“.

Para comprender completamente esa descripción, se necesita un contexto, y en particular, la pregunta sobre qué es un container es la primera pregunta que debe responderse. Además, comprender lo que esto significa en términos de cómo se desarrollan, implementan y ejecutan las aplicaciones, ayuda a valorar aún más lo que Kubernetes es y hace posible.

 

¿Qué es un container?

La mayoría de las personas involucradas en tecnología saben lo que es una virtual machine (VM).

En resumen, un virtual machine es una instancia de un sistema informático diferente, con un sistema operativo y un número de aplicaciones instaladas. El software de emulación utiliza un sistema host (generalmente, es un sistema real, simple, aunque también puede ser anidado virtual). Esto es posible gracias a la virtualización completa o a la virtualización asistida por el hardware, proporcionando la capa necesaria para ejecutar un guest system operativo en completo aislamiento.

Hay varios sistemas para ejecutar virtuals machine, como VMWare, Virtualbox, Xen, KVM y varios otros.

Una de las características del VM es que proporciona un aislamiento completo, en términos de tener sus propios procesos, redes, usuarios, etc., que están separados del sistema host y otros guest systems que pueden estar ejecutándose junto a él y no son visibles el sistema host o viceversa. Además, las VM pueden construirse según la especificación que se desee con paquetes preinstalados y configurados, de cualquier número de variantes de sistemas operativos y guardarlos como una imagen.

Los containers son similares a las VM en muchos aspectos, pero también son diferentes.

Al igual que con las virtual machine, los containers son instancias que se ejecutan en machine host. Al igual que las VM, pueden personalizarse y construirse según la especificación que se desee, y pueden usarse en su mayor parte de la forma en que se utiliza una virtual machine, permitiendo procesos aislados, redes, usuarios, etc.

La diferencia entre los containers y las virtual machine es que el guest operating system no está instalado, y generalmente, consiste solo en el código de la aplicación y, cuando se ejecuta, solo ejecuta los procesos necesarios para los cuales se usa el container. Esto se debe a que los containers, son posibles utilizando las características del kernel del sistema operativo host y el sistema de archivos en capas en lugar de la capa de emulación requerida, que se mencionó anteriormente, para ejecutar VM. Esto también significa que los containers no consisten en diferentes sistemas operativos con aplicaciones instaladas, pero pueden tener los componentes necesarios que los apartan como diferentes versiones y variantes de Linux. Más aún, esto significa que dado que un container no requiere su propio sistema operativo, utiliza menos recursos y consume solo los recursos necesarios para la aplicación que se ejecuta al iniciarse. Esto hace que las aplicaciones puedan consistir en componentes de containers más pequeños, en lugar de las aplicaciones monolíticas heredadas instaladas en sistemas virtuales o de bare metal.

La forma en que los containers son similares a las virtual machine es que también se almacenan como imágenes, aunque una gran diferencia es que las imágenes en containers son mucho más pequeñas, portátiles y más fáciles de usar, que las imágenes de VM, por las razones mencionadas anteriormente, es decir, de no requerir un sistema operativo instalado como parte de la imagen. Esto hace que sea posible tener una aplicación empaquetada y lista para usar, que se ejecuta de la misma manera, independientemente de dónde se encuentre, siempre que el sistema host ejecute containers (containers de Linux, específicamente).

Esta pequeña huella y la portabilidad general de los containers, en comparación con las VM, es clave para entender cómo un sistema Linux Kubernetes se ha puesto de moda.

Es común que cuando uno comienza a trabajar con containers aún piense en ellos como un virtual machine y se centre en el concepto de virtualización, donde en realidad se trata más del concepto de aislamiento, que es la forma en que se describen los containers.

 

Fuente: https://dyn.com/blog/kubernetes-the-difference-between-containers-and-virtual-machines/

 

 

En: Blog el 10/10/2018