kubernetes- La magia de K8S, en un breve resumen ‍

Victoria Laspoumaderes
Computación en la nube
¿Qué es K8S o Kubernetes?... (k, 8 caracteres, s... ¿se entiende?)
                               

                    La magia de K8S, en un breve resumen        

¿Qué es K8S o Kubernetes?... (k, 8 caracteres, s... ¿se entiende?)

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 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.

Para entrar un poco más en detalle acerca de qué es y qué hace Kubernetes, podemos definirlo como un sistema de control del ciclo de vida de contenedores usando distintos métodos que permiten tener un alto nivel de disponibilidad y escabilidad, entre otras características.

A continuación, algunos conceptos básicos...

Clúster

Un clúster es un conjunto de servidores. En este caso será un clúster de Kubernetes y cada servidor tendrá un rol, que puede ser alguno de los siguientes:

  • Máster: solo hay uno en el cluster y es el que se encarga de repartir la carga de trabajo entre los demás nodos, mantener el estado deseable de trabajo, escalar las aplicaciones o actualizarlas.
  • Worker: los demás nodos que no son máster. Son los que ejecutan las aplicaciones por medio de contenedores. El mínimo número de workers deseables es 3.

Nota: La comunicación entre el máster y los worker, se hace por medio de la API de Kubernetes, a través del máster (aunque también los usuarios finales pueden interactuar con la API). Los worker son conectados al máster por medio de un proceso llamado kubelet. Este proceso, 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í.

Un clúster de Kubernetes puede ser implementado en una máquina física o en una máquina virtual. También es posible usar Minikube, una versión ligera de Kubernetes que crea una máquina virtual localmente con un solo worker.

Pod

Es la mínima unidad de ejecución de Kubernetes. Representa procesos en ejecución en el clúster. Un Pod contiene uno o varios contenedores (de Docker, por ejemplo) y administra los recursos de la aplicación, dirección IP y distintas opciones que determina como funcionan los contenedores.

Servicio

Es una abstracción que define un conjunto de pods los cuales ejecutan un micro-servicio como puede ser el frontend.

Los pods son finitos, es decir, “nacen” y “mueren” pero no pueden “resucitar”. Se crean y eliminan a lo largo de la ejecución del Deployment. Cada pod tiene su dirección IP propia, por lo que las direcciones IP de los pods que se ejecutan en un momento determinado serán diferentes que las que se ejecuten en otro instante. Esto supone un problema dado que querremos tener una dirección IP fija a la hora de acceder a los pods. Por ello existe el concepto de servicio, para solucionar este problema.

Instalación

Como comenté más arriba, necesitamos tener un servidor que actúe como máster y uno como worker, por lo que al menos necesitaremos 2 servidores VPS. La imagen a seleccionar a la hora de inicializarlos será la de un contenedor (Ejemplo: Docker). Para no tener problemas, los servidores deben tener al menos dos procesadores, aunque se puede forzar con menos pero puede que el rendimiento no sea el deseado.

Entre los principales beneficios que nos ofrece el uso de K8S , esta la de gestión mejorada.

La introducción de este tipo de tecnología en nuestra plataforma, nos permitirá automatizar tareas de control y gestión tanto de las aplicaciones como de los contenedores. De esta forma, facilitaremos el despliegue, escalado, mantenimiento y monitorización con cierta automatización o forma manual a través de comandos muy (muy) sencillos.

Las principales ventajas de su uso nos permiten:

  • 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. Esto se realiza con el proceso Kubelet, cómo mencioné más arriba.
  • 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.

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, que evoluciona constantemente, por lo que cada vez más se está implementando en áreas no exploradas.

Victoria Laspoumaderes

DevOps Engineer-

Uno de mis mayores valores es mi entusiasmo por aprender y mejorar mi conocimiento día a día. Me destaco por ser autodidacta y proactiva. Trabajo bien en equipo. Tengo buena tolerancia trabajando bajo presión, encarar nuevos desafíos y me esfuerzo para lograr los objetivos que me propongo.
Disfruto transmitiendo a otros lo que voy aprendiendo. Creo en el fundamento del dar para recibir.
Soy apasionada por la tecnología y trabajo a diario por la inclusión de más mujeres en #STEM.
Participo de comunidades como #LasDeSistemas y #WomenWhoCodeBsAs donde trabajamos en disminuir la brecha de genero en IT.

Related Posts

Únete a nuestra Newsletter

Lidera la Conversación en la Nube