Descubre la tendencia Kubernetes, para principiantes y curiosos

Últimamente se ha escuchado hablar mucho sobre esta tecnología de software relacionada al mundo de la computación en la nube. Descubriremos qué son, para qué sirven y se están usando. No esperes terminología técnica y precisa en este artículo, ya que está escrito en términos para que cualquiera pueda entenderlo.

Podremos ver que esta tecnología en la nube representa una disrupción en el modo usual de alojamiento o hosting que utilizan algunas aplicaciones y servicios, aunque no se basa en un mero reemplazo de aquel, sino que abre un abanico de posibilidades diferentes.

Comenzaremos por algunas características básicas, Kubernetes es un software o sistema informático desarrollado por el gigante de internet Google, pero actualmente no posee su propiedad ya que lo donó a la Cloud Native Computing Foundation, la cual pertenece a la Linux Foundation.

Este software es de código abierto, es decir, que cualquiera puede ver, editar y añadir código a la fuente, por lo que acepta contribuciones de la comunidad. Está escrito en lenguaje Go, que es una variación del lenguaje C desarrollado por Google.

Como hemos podido observar, Google es la empresa central en este software, y su gran interés y esfuerzos se deben a que es propietaria de un servicio en la nube (Google Cloud Platform) con la que compite contra otros gigantes de internet como Microsoft Azure y Amazon Web Services.

Sin embargo, nos podrá sorprender que esta tecnología que define el mencionado software es totalmente compatible y está disponible para las plataformas de servicios en la nube de la competencia citada.

Contenedores

Para responder esta pregunta y comprender de qué se trata este misterioso software, diremos que tiene por objetivo crear contenedores de programas. Un contenedor es un entorno con todas las características técnicas para ejecutar la mencionada aplicación y la magia de K8S (abreviación común de Kubernetes) aparece cuando debemos ejecutar ciertas tareas. Estas tareas están destinadas a administrar correctamente el entorno y la aplicación misma.

La importancia de los contenedores aparece cuando es necesario desacoplar aplicaciones, es decir, independizarlas del sistema operativo donde se están ejecutando y poder así copiarlas, trasladarlas, entre otros. Anteriormente (y paralelamente también, ya que no se ha cesado completamente en su utilización) se utilizaban las llamadas máquinas virtuales, pero contienen una instancia de ordenador o computadora completa y resulta extremadamente pesado.

En contrapartida, los contenedores son livianos ya que solo contiene la aplicación con sus dependencias (librerías, frameworks, entre otros) y pueden funcionar sin sobrecargar el hardware.

La gestión mejorada

La introducción de este tipo de tecnología ha permitido automatizar tareas de control y gestión tanto de las aplicaciones como de los contenedores. De esta forma, se hace posible el despliegue, escalado, mantenimiento y monitorización con cierta automatización o forma manual a través de comandos muy sencillos.

Así, se presentan un conjunto de ventajas al utilizar este tipo de tecnología, como pueden ser:

  • Despliegue automático:Al realizar cambios e implementar actualizaciones en la aplicación, estos se pueden realizar de forma progresiva y controlada mientras se monitoriza la actividad y la salud del sistema. Si algo llegase a fallar, puede volver al estado anterior automáticamente en lo que se denomina: rollback.
  • Balance de carga automático:Todos los contenedores creados se encuentran controlados por el software, de esta forma no se requiere un mecanismo externo y así, se puede balancear la carga sobre estos de forma sencilla y completamente implementada en un único sistema.
  • Autorreparación:Si algún contenedor llegase a fallar, puede reiniciarse o crearse otro en su lugar. También puede decidirse en qué casos y como reemplazar otros contenedores.
  • Control de la seguridad:Los archivos y configuraciones especiales de seguridad, que pueden incluir información sensible como contraseñas o credenciales de acceso se almacenan en una sección especial llamada secrets. Esta se trata de forma que no sea expuesta.
¿Dónde se utiliza Kubernetes?

Como se mencionó anteriormente, Google tiene un nivel muy alto de involucramiento con este software y, por lo tanto, se utilizan en aplicaciones y soluciones en la nube de la que es propietario como: Gmail, Drive, Maps, etc.

Arquitectura: elementos o módulos:

Este software está definido por ciertas unidades modulares que le dan funcionamiento como sistema global. Para entender como funciona describiremos alguno de ellos de forma de síntesis.

Antes de proceder, diremos que Kubernetes sigue una arquitectura de tipo maestro-esclavo, que implica que solo un elemento puede comunicar a la vez (el maestro) mientras que los demás solo pueden escuchar (esclavos)

  • Nodo:También conocido como esclavo o worker, es la máquina o dispositivo (real o virtual) donde se despliegan los contenedores, por lo tanto, también donde se ejecutan.
  • Planificador:Tiene la tarea de decidir, en base a la disponibilidad de recursos computacionales, en qué nodo se desplegará el contenedor. Para ello tiene en cuenta los requisitos de los contenedores en particular para que este pueda funcionar correctamente.
  • Kubelet:Tiene la tarea de monitorear el estado de ejecución de cada nodo. Se encarga además de ejecutar, detener y mantener los contenedores. La función de autorreparación y despliegue automático se realizan aquí.
  • cAdvisor:Tiene funciones de monitoreo y recopilación de métricas en cada nodo sobre las áreas de: CPU, memoria, archivos, red, etc.

Ahora que entiendes cómo y dónde funciona esta tecnología, podrás seguir en vivo la evolución de ellas en el mundo de los servicios en la nube, los cuales están generando numerosos modelos y formas de implementación de software nuevo. Además, se trata de una tecnología en crecimiento por lo que cada vez más se está implementando en áreas no exploradas.

Comentarios