Kubernetes es un sistema de código abierto para administrar aplicaciones en un entorno de tecnología de contenedores. Kubernetes automatiza los procesos manuales para implementar y escalar aplicaciones en contenedores. También puede administrar grupos de aplicaciones en contenedores, que pueden abarcar nubes públicas, privadas e híbridas.

El nombre, Kubernetes, está inspirado en la analogía del barco de contenedores, y se basa en eso para indicar la palabra griega que se traduce como “timonel,” como en el que necesita pilotar el barco de contenedores. Kubernetes también se llama “kube” y “k8s” que es un numeronimo, usando la primera letra, la última letra y el número de letras entre esas letras.

Historia de kubernetes

Dejando a un lado las etiologías, Kubernetes fue creado originalmente por Google, como resultado de un proyecto interno Borg, con contenedores que potencian la tecnología Google Cloud. De hecho, Google afirma tener experiencia con contenedores a lo largo de quince años, y afirma que “corre miles de millones de contenedores a la semana,” lo que les dio mucha experiencia que entró en este programa de software. Kubernetes luego fue donado a la Fundación Linux como una tecnología semilla, para formar la Fundación de computación nativa en la nube (CNCF) en 2015..

Aunque Kubernetes es un proyecto de código abierto, es oficialmente compatible con Microsoft Azure y Google Cloud. Kubernetes obtuvo una aceptación inicial entre los primeros usuarios, lo que se tradujo en un crecimiento constante y ahora ocupa una posición destacada en el espacio de software de administración de contenedores..

En estos días, el uso de múltiples contenedores para una aplicación de producción real se ha convertido en algo común, con los contenedores ubicados en múltiples servidores. El software Kubernetes permite la implementación de estos contenedores y los escala en múltiples servidores para que coincidan con la carga de trabajo, incluida la programación de los contenedores en un clúster. También puede ayudar a gestionar la salud de estos múltiples contenedores..

Despliegue kubernetes

Kubernetes se implementa para un grupo de contenedores, lo que se denomina clúster. Uno de los contenedores del clúster se designa como el clúster maestro, que ejecuta los procesos del plano de control de Kubernetes. Los otros contenedores del clúster se asignan como nodos, que son las máquinas de trabajo, que caen bajo el control del clúster maestro, que funciona como un punto final unificado..

El clúster maestro tiene el control total de sus nodos, designando su ciclo de vida, incluida la evaluación de su estado, así como el control de las actualizaciones y reparaciones de cada nodo. En el clúster, puede haber contenedores especiales, que se designan como agentes por nodo con funciones específicas, por ejemplo, recopilación de registros o conectividad de red dentro del clúster..

El valor predeterminado para un nodo es que tenga una CPU virtual y 3,75 GB de RAM, que es el tipo de máquina estándar de Compute Engine. Para tareas más informáticas, se puede elegir una plataforma de CPU mínima de línea de base más alta. Tenga en cuenta que no todos los recursos del nodo se pueden aplicar a la aplicación para la que está diseñado. Más bien, algunos de estos recursos son necesarios para ejecutar el motor Kubernetes. Los recursos asignables del nodo, que se pueden usar para ejecutar la aplicación, son la diferencia entre los recursos totales y la cantidad reservada para el motor Kubernetes.

A modo de ejemplo, si el nodo tiene 4 GB de RAM disponible, el 25% se reserva para el motor Kubernetes, y el 75% restante se puede usar para ejecutar la aplicación, y solo requiere el 20% de los 4 GB de RAM siguientes. El nodo tiene un total de 8GB de RAM. El motor Kubernetes está menos hambriento de recursos de CPU, ya que reserva solo el 6% de la potencia de procesamiento del primer núcleo del nodo y solo el 1% de un segundo núcleo designado para el nodo.

El maestro del clúster ejecuta el servidor de API de Kubernetes, que maneja las solicitudes, que se originan a partir de las llamadas a la API de Kubernetes desde el software de Kubernetes. El servidor API de Kubernetes funciona como el 'centro de comunicación' para todo el cluster de contenedores.

Características de kubernetes

Contribuyendo a la popularidad de Kubernetes es su robusto conjunto de características. Éstos incluyen:

  • Empaquetado automático de contenedores: esto automatiza el lugar donde se colocan los contenedores en función del uso más eficiente de los recursos..
  • Escala horizontal: las aplicaciones se pueden escalar hacia arriba o hacia abajo a través de un comando simple, o automatizarse para que coincida con el uso de la CPU.
  • Implementaciones y reversiones automatizadas: Kubernetes implementa actualizaciones de las aplicaciones en etapas, en lugar de todas a la vez, y monitorea los problemas de salud y, si los encuentra, se revertirá automáticamente a una versión más estable para preservar el tiempo de actividad..
  • Orquestación de almacenamiento: funciona con una variedad de soluciones de almacenamiento para una flexibilidad adicional, desde la nube local a la pública..
  • Recuperación automática: la capacidad de matar contenedores que se congelan y reiniciar los contenedores que se congelan o fallan en su chequeo de salud.
  • Descubrimiento del servicio y equilibrio de carga: Kubernetes puede asignar a cada contenedor su propia dirección IP, con un nombre de DNS y la capacidad de distribuir la carga entre ellos.
  • Administración secreta y de configuración: las aplicaciones pueden actualizarse sin una reconstrucción de imagen.
  • Ejecución por lotes: Gestión de cargas de trabajo por lotes y de integración continua..

Aplicaciones en el mundo real de Kubernetes.

Kubernetes es utilizado por las principales corporaciones, como Comcast, eBay, Goldman Sachs, The New York Times y Pokemon Go, entre muchos otros. Un ejemplo del uso de Kubernetes es el proveedor de video Sling TV, que después de su lanzamiento en 2015 experimentó problemas a medida que los nuevos suscriptores superaban sus recursos existentes mientras intentaban distribuir televisión en vivo a través de Internet. Con el fin de mejorar la experiencia de sus clientes y con el deseo de una mayor flexibilidad, por ahora y en el futuro, se tomó la decisión de cambiar a una estrategia de nube híbrida. Esto utilizó tanto un centro de datos múltiple VMWare en las instalaciones, integrado con múltiples nubes públicas, y controlado a través del motor Kubernetes.

Según Brad Linder, su nativo en la nube de Sling TV y Big Data Evangelist, “Estamos llegando al lugar donde podemos desplegar con un solo clic un centro de datos completo: la red informática, el registro y el monitoreo de todas las aplicaciones..” Continúa señalando que el despliegue previo de una nueva aplicación llevaría días, lo que ahora se puede lograr en aproximadamente una hora a través del motor Kubernetes..

Si bien Kubernetes tiene orígenes humildes como proyecto interno en Google, ha evolucionado hasta convertirse en un jugador dominante para el software de gestión de contenedores, sin duda fomentado por su enfoque de código abierto. El poder y la flexibilidad del motor Kubernetes explica por qué se usa en tantas industrias diversas.

  • También discutimos la tecnología de contenedores en mayor detalle aquí