¿Qué es Kubernetes?

febrero 16, 2025

Kubernetes (K8s) es una plataforma de código abierto, portable y extensible para la gestión de aplicaciones en contenedores y sus servicios, que facilita la configuración y la automatización de despliegues. Kubernetes conforma un ecosistema amplio y de rápido crecimiento. Sus servicios, soporte y herramientas están ampliamente disponibles.

Kubernetes, palabra de origen griego que significa timonel o piloto, fue liberado como código abierto por Google en 2014. Se basa en más de una década de experiencia de Google ejecutando cargas de trabajo de producción a gran escala, combinada con las mejores ideas y prácticas de la comunidad.

Evolución del despliegue de aplicaciones:

Despliegue tradicional: Inicialmente, las aplicaciones se ejecutaban en servidores físicos. Definir límites de recursos para las aplicaciones en un servidor físico era imposible, lo que resultaba en una asignación ineficiente de recursos.

Despliegue con virtualización: La virtualización permite ejecutar múltiples máquinas virtuales (VM) en la CPU de un único servidor físico. La virtualización permite el aislamiento de aplicaciones entre las VM y ofrece un grado de seguridad, ya que la información de una aplicación no puede ser accedida libremente por otra. La virtualización permite un mejor uso de los recursos de un servidor físico y una mayor escalabilidad.

Despliegue con contenedores: Los contenedores son similares a las VM, pero tienen un aislamiento a nivel de sistema operativo que les permite compartir el SO entre aplicaciones. Por lo tanto, los contenedores se consideran ligeros. Al igual que las VM, un contenedor tiene su propio sistema de archivos, CPU, memoria, espacio de proceso, etc. Los contenedores ofrecen numerosas ventajas como: rápida creación y despliegue de aplicaciones, desarrollo e integración continuos, diferenciación entre desarrollo y operaciones, observabilidad del sistema y las aplicaciones, consistencia entre entornos, portabilidad, gestión centralizada de aplicaciones, microservicios distribuidos, aislamiento de recursos y uso eficiente de los mismos.

¿Por qué necesitamos Kubernetes?

En entornos de producción, es necesario gestionar los contenedores que ejecutan las aplicaciones y asegurar que no haya tiempo de inactividad. Por ejemplo, si un contenedor se cae, es necesario que otro se inicie. Kubernetes proporciona un framework para ejecutar sistemas distribuidos de forma robusta. Se encarga de la replicación y la conmutación por error de las aplicaciones, proporcionando patrones de despliegue.

Kubernetes ofrece:

  • Descubrimiento de servicios y balanceo de carga: Kubernetes puede exponer un contenedor utilizando DNS o su propia dirección IP. Si el tráfico a un contenedor es alto, Kubernetes puede balancear la carga y distribuir el tráfico de red para que el despliegue sea estable.
  • Orquestación de almacenamiento: Kubernetes permite montar automáticamente un sistema de almacenamiento de su elección.
  • Despliegues y reversiones automáticos: Kubernetes puede cambiar el estado actual al estado deseado a una velocidad controlada.
  • Empaquetamiento automático: Kubernetes puede orquestar contenedores en los nodos para aprovechar al máximo los recursos.
  • Autoreparación: Kubernetes reinicia los contenedores que fallan, reemplaza los contenedores, elimina los contenedores que no responden a las comprobaciones de estado y no los anuncia a los clientes hasta que están listos para funcionar.
  • Gestión de la configuración y secretos: Kubernetes permite almacenar y gestionar información sensible.

¿Qué no es Kubernetes?

Kubernetes no es un sistema PaaS (Plataforma como Servicio) tradicional y completo. Opera a nivel de contenedor, no a nivel de hardware. Kubernetes:

  • No limita los tipos de aplicaciones soportadas.
  • No despliega código fuente ni construye aplicaciones.
  • No proporciona servicios a nivel de aplicación, como middleware.
  • No dicta las soluciones de registro (logging), monitorización o alertas.
  • No proporciona ni exige una configuración de lenguaje/sistema.
  • No proporciona ni adopta ninguna configuración de aprovisionamiento, mantenimiento, gestión o sistema de auto-recuperación completa.
  • No es un mero sistema de orquestación. Elimina la necesidad de orquestación.

Leave A Comment

Categorías

Recent Posts

Create your account