Lo esencial de Kubernetes

¿Qué es Kubernetes?

Kubernetes o k8s (k, 8 caracteres, s… ¿se entiende?), o “kube” para ser breves, es una plataforma open source que automatiza las operaciones de los contenedores de Linux. Elimina muchos de los procesos manuales involucrados en la implementación y escalabilidad de las aplicaciones en contenedores. En otras palabras, puede crear un clúster de grupos de hosts que ejecutan contenedores de Linux, y Kubernetes lo ayuda a administrar con facilidad y eficacia esos clústeres.

Clústeres de Kubernetes:

Estos clústeres pueden abarcar hosts en nubes públicas, privadas o híbridas. Por este motivo, Kubernetes es la plataforma ideal para alojar aplicaciones nativas de la nube que requieren una expansión rápida, como la transmisión de datos en tiempo real a través de Apache Kafka.

La importancia de implementar Kubernetes

Las aplicaciones de producción real abarcan varios contenedores. Estos contenedores deben implementarse en varios hosts de servidores. La seguridad de los contenedores tiene varias capas y puede ser complicada. Aquí es donde Kubernetes puede ayudarlo. Kubernetes le ofrece la capacidad de organización y gestión necesaria para implementar contenedores a escala para estas cargas de trabajo.

¿Cómo funciona y para qué sirve Kubernetes?

La principal ventaja de usar Kubernetes en su entorno, especialmente si se encuentra optimizando el desarrollo de las aplicaciones para la nube, es que le ofrece la plataforma para programar y ejecutar contenedores en clústeres de máquinas virtuales o físicas.

A grandes rasgos, le permite implementar una infraestructura basada en contenedores en los entornos de producción, y depender completamente de ella. Y dado que Kubernetes abarca todo lo referido a la automatización de tareas operativas, puede hacer muchas de las cosas que también otras plataformas de aplicaciones o sistemas de gestión le permiten hacer, pero para sus contenedores.

Con Kubernetes puedes:

  • Orquestar contenedores en múltiples hosts.

  • Hacer un mejor uso del hardware para maximizar los recursos necesarios para ejecutar sus aplicaciones empresariales.

  • Controlar y automatizar las implementaciones y actualizaciones de las aplicaciones.

  • Montar y añadir almacenamiento para ejecutar aplicaciones con estado.

  • Escalar las aplicaciones en contenedores y sus recursos sobre la marcha.

  • Administrar servicios de forma declarativa, que garanticen que las aplicaciones implementadas siempre se ejecuten del modo que las implementó.

  • Comprobaciones de estado y autoregeneración de sus aplicaciones con ubicación, reinicio, replicación y escalamiento automáticos.

 

Dependencias de otros proyectos Open Source para Kubernetes:

Sin embargo, Kubernetes depende de otros proyectos para proporcionar todos estos servicios orquestados. Con el agregado de otros proyectos de open source, puede desplegar al máximo la potencia de Kubernetes. Estas piezas necesarias incluyen las siguientes, entre otras:

  • Registro, a través de proyectos como Atomic Registry o Docker Registry.

  • Conexiones en red, a través de proyectos como OpenvSwitch y enrutamiento inteligente de perímetros.

  • Telemetría, a través de proyectos como heapster, kibana, hawkular y elastic.

  • Seguridad, a través de proyectos como LDAP, SELinux, RBAC y OAUTH, con capas multitenencia.

  • Automatización, con incorporación de guías de Ansible para instalación y administración del ciclo de vida de los clústeres.

  • Servicios, a través de un amplio catálogo del contenido creado de antemano de los patrones de las aplicaciones más conocidas.

El lenguaje de Kubernetes

Como cualquier tecnología, existen muchas palabras específicas de la tecnología que pueden ser una barrera al ingresar. Veamos algunos de los términos más comunes para ayudarlo a entender Kubernetes:

  • Master: la máquina que controla los nodos Kubernetes. Aquí es donde se originan todas las asignaciones de tareas.

  • Nodo: estas máquinas realizan las tareas requeridas y asignadas. El master de Kubernetes las controla.

  • Pod: un grupo de uno o más contenedores implementados en un nodo único. Todos los contenedores de un pod comparten la dirección IP, la IPC, el nombre del host y otros recursos. Los pods abstraen la red y el almacenamiento del contenedor subyacente. Esto le permite mover los contenedores por el clúster con mayor facilidad.

  • Controlador de replicación: controla la cantidad de copias idénticas de un pod que deben ejecutarse en algún lugar del clúster.

  • Servicio: separa las definiciones de tareas de los pods. Los proxies de servicios de Kubernetes envían automáticamente las solicitudes de servicio al pod correspondiente, sin importar adónde se traslada en el clúster, o incluso si está siendo reemplazado.

  • Kubelet: este servicio se ejecuta en los nodos y lee los manifiestos del contenedor, y garantiza que los contenedores definidos estén iniciados y ejecutándose.

  • kubectl: es la herramienta de configuración de la línea de comandos de Kubernetes.