Kubernetes: servidores físicos, máquinas virtuales y contenedores

Kubernetes es un marco de código abierto para administrar cargas de trabajo y servicios en contenedores que permite la configuración declarativa y la automatización. Tiene un ecosistema enorme y de rápida expansión. Los servicios, el soporte y las herramientas para Kubernetes están ampliamente disponibles.

Kubernetes es una palabra griega que significa «timonel» o «piloto». El acrónimo K8s proviene de contar las ocho letras entre las letras «K» y «s». En 2014, Google hizo que el proyecto Kubernetes fuera de código abierto. Kubernetes combina los 15 años de experiencia de Google en la operación de cargas de trabajo de producción a escala con las mejores ideas y prácticas de la comunidad.

Servidores físicos:

Las organizaciones solían ejecutar aplicaciones en servidores físicos. En un servidor físico, no había ningún método para establecer límites de recursos para las aplicaciones, lo que generaba problemas de asignación de recursos. Cuando numerosas aplicaciones operan en un servidor físico, por ejemplo, puede haber momentos en que un programa consuma la mayoría de los recursos, lo que hace que las otras aplicaciones tengan un rendimiento inferior.

Una opción posible es ejecutar cada programa en un servidor físico separado. Sin embargo, esto no se amplió porque los recursos estaban infrautilizados y mantener una gran cantidad de servidores físicos era costoso.

Maquinas virtuales:

La virtualización se introdujo como una solución. Le permite operar varias máquinas virtuales (VM) en la CPU de un solo servidor físico. La virtualización permite aislar programas entre máquinas virtuales (VM) y proporciona un nivel de seguridad al evitar que otra acceda libremente a la información de una aplicación.

La virtualización mejora la eficiencia de los recursos en un servidor físico, mejora la escalabilidad al permitir que las aplicaciones se agreguen o cambien rápidamente, reduce los costos de hardware y mucho más. Puede ofrecer una colección de recursos físicos como un clúster de máquinas virtuales desechables mediante la virtualización.

Además del hardware virtualizado, cada VM es una máquina completa con todos sus componentes, incluido su propio sistema operativo.

Contenedores:

Los contenedores son comparables a las máquinas virtuales (VM), excepto que permiten que los programas compartan el mismo sistema operativo (SO). Como resultado, los contenedores se consideran livianos. Un contenedor, como una máquina virtual, tiene su propio sistema de archivos, CPU, memoria, espacio de proceso y otros recursos. Son portátiles entre nubes y distribuciones de SO porque están divorciados de la infraestructura subyacente.

Los contenedores han crecido en popularidad como resultado de sus beneficios adicionales, que incluyen:

  • La creación de imágenes de contenedores es más simple y eficiente que usar imágenes de máquinas virtuales para desarrollar e implementar aplicaciones ágiles.
  • Desarrollo, integración e implementación continuos: permite la creación y la implementación de imágenes de contenedores confiables y frecuentes, así como reversiones rápidas y eficientes (debido a la inmutabilidad de la imagen).
  • Separación de preocupaciones entre desarrollo y operaciones: produzca imágenes de contenedores de aplicaciones durante la compilación/lanzamiento en lugar de la implementación, aislando las aplicaciones de la infraestructura.
  • Observabilidad: esta característica expone no solo datos y métricas a nivel del sistema operativo, sino también el estado de la aplicación y otras señales.
  • Coherencia en el entorno durante el desarrollo, las pruebas y la producción: en una computadora portátil, funciona igual que en la nube.
  • Portabilidad de las distribuciones de la nube y del sistema operativo: se ejecuta en Ubuntu, RHEL, CoreOS, en las instalaciones, en las principales nubes públicas y en cualquier otro lugar.
  • Administración centrada en la aplicación: deja de operar un sistema operativo en hardware virtual y pasa a ejecutar una aplicación en un sistema operativo con recursos lógicos.
  • Microservicios que están débilmente vinculados, distribuidos, elásticos y liberados: en lugar de una pila monolítica que opera en una sola máquina grande con un solo propósito, las aplicaciones se dividen en componentes más pequeños e independientes que se pueden implementar y administrar dinámicamente.
  • El rendimiento de la aplicación es predecible debido a la separación de recursos.
  • Alta eficiencia y densidad en el uso de recursos.

Publicación traducida automáticamente

Artículo escrito por sanketnagare y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *