Resumen
Kubernetes (también conocida como k8s o "kube") es una plataforma open source para la organización en contenedores que automatiza muchos de los procesos manuales involucrados en la implementación, la gestión y el ajuste de las aplicaciones que se alojan en ellos.
Originalmente, los responsables del diseño y el desarrollo de Kubernetes eran los ingenieros de Google como parte del proyecto Borg, antes de que lo donaran a la fundación Cloud Native Computing Foundation (CNCF) en 2015. Red Hat® fue una de las primeras empresas que trabajó con Google en Kubernetes, incluso antes del lanzamiento, y ahora es el segundo colaborador más importante de su proyecto upstream.
Clústeres de Kubernetes
El clúster es una implementación de Kubernetes en funcionamiento, que consiste en un grupo de hosts ejecutándose en contenedores de Linux®. Se puede visualizar en dos partes: el plano de control y las máquinas informáticas, también llamadas nodos.
Cada nodo es su propio entorno de Linux, y puede ser una máquina física o virtual. Además, los nodos ejecutan los pods, que están formados por contenedores.
El plano de control se encarga de mantener el estado deseado del clúster, como las aplicaciones que se ejecutan y las imágenes de contenedores que se utilizan. Las máquinas informáticas son las que ejecutan las aplicaciones y las cargas de trabajo. El plano de control recibe las instrucciones del administrador (o del equipo de DevOps) y las trasmite a las máquinas informáticas.
Esta transferencia funciona gracias a una gran cantidad de servicios que le permiten seleccionar el nodo más adecuado para la tarea de manera automática. Los servicios separan las definiciones de tareas de los pods y envían las solicitudes de servicio al pod correspondiente de forma automática, sin importar adónde se traslade en el clúster ni si se lo reemplaza. Además, distribuye los recursos y asigna los pods que se encuentran en ese nodo para cumplir con la tarea solicitada.
Kubernetes funciona en un sistema operativo (por ejemplo, Red Hat Enterprise Linux) e interactúa con los pods de los contenedores que se ejecutan en los nodos.
El estado deseado de un clúster de Kubernetes define las aplicaciones o las cargas de trabajo que deben ejecutarse, junto con las imágenes que utilizan, los recursos que deben estar disponibles y otros ajustes similares.
Esto no modifica demasiado la forma en que gestiona los contenedores con este tipo de infraestructura. Su participación se produce en un nivel superior, lo cual le permite supervisar mejor los elementos sin la necesidad de gestionar excesivamente cada contenedor o nodo por separado.
Usted decide dónde ejecutará Kubernetes: en servidores dedicados (bare metal), máquinas virtuales (VM), proveedores de nube pública, nubes privadas o entornos de nube híbrida. Una de sus ventajas principales es que funciona en varios tipos de infraestructura.
Obtenga más información de los líderes de Red Hat sobre la manera en que los contenedores revolucionan la nube híbrida abierta.
Diferencias entre Kubernetes y Docker
Docker se puede usar como un tiempo de ejecución de contenedores organizado mediante Kubernetes. Cuando Kubernetes programa un pod en un nodo, el kubelet (el servicio que se asegura de que cada contenedor esté en funcionamiento) que se ejecuta en dicho nodo indica a Docker que inicie los contenedores especificados.
A continuación, el kubelet comienza a recopilar ininterrumpidamente la información sobre el estado de esos contenedores desde Docker y la almacena en el plano de control. Docker traslada los contenedores a ese nodo y los inicia y detiene.
La diferencia de utilizar Kubernetes con Docker radica en que un sistema automatizado solicita que Docker realice ciertas acciones, en lugar de que las ejecute el administrador en los nodos de todos los contenedores de forma manual.
¿Está listo para comenzar a usar Kubernetes? Acceda al curso cuando lo solicite y aprenda a organizar las aplicaciones y los servicios en contenedores, a realizar las pruebas correspondientes con Docker y a implementarlos en un clúster de Kubernetes con Red Hat OpenShift®.
La utilidad de Kubernetes
Kubernetes le permite distribuir y gestionar las aplicaciones heredadas, desarrolladas en la nube y en contenedores, así como aquellas que se rediseñan con una estructura de microservicios.
Es necesario que el equipo de desarrollo pueda diseñar aplicaciones y servicios nuevos con rapidez para satisfacer las necesidades cambiantes de la empresa. El desarrollo en la nube comienza con los microservicios en contenedores, lo cual agiliza el proceso y facilita la transformación y la mejora de las aplicaciones actuales.
El desarrollo de las aplicaciones con Kubernetes
Las aplicaciones de producción abarcan varios contenedores, los cuales deben implementarse en diversos hosts de servidores. Kubernetes ofrece las funciones de organización y gestión que permiten implementar los contenedores según sea necesario para estas cargas de trabajo.
El sistema de organización de esta plataforma le permite diseñar servicios de aplicaciones que abarquen varios contenedores, programar los contenedores en un clúster, ampliarlos y controlar su estado a lo largo del tiempo. Además, posibilita la adopción de medidas efectivas para mejorar la seguridad de la TI.
Kubernetes también debe integrarse a las redes, el almacenamiento, la seguridad, la telemetría y demás servicios para proporcionar una infraestructura integral de contenedores.
Si lo lleva a un entorno de producción y aplicaciones múltiples, resulta evidente que necesita varios contenedores ubicados en el mismo lugar y que funcionen juntos para ofrecer servicios individuales.
Los contenedores de Linux brindan a las aplicaciones basadas en los microservicios una unidad para la implementación de aplicaciones y un entorno de ejecución autónomo que resultan ideales. Además, con los microservicios organizados en contenedores, es más fácil coordinar los servicios, como el almacenamiento, la conexión de red y la seguridad.
Esto multiplica considerablemente la cantidad de contenedores en el entorno y, a medida que se acumulan, aumenta la complejidad.
Kubernetes es la solución para varios de los problemas comunes relacionados con la proliferación de los contenedores, ya que los ordena y reúne en pods. Los pods agregan un nivel de abstracción a los contenedores agrupados, así que podrá programar las cargas de trabajo y proporcionar los servicios necesarios, como las conexiones de red y el almacenamiento, para esos contenedores.
Además, Kubernetes lo ayuda a equilibrar la carga en los pods y a garantizar que cuente con la cantidad adecuada de contenedores en ejecución para respaldar las cargas de trabajo.
La implementación correcta de Kubernetes y el uso de otros proyectos open source, como Open vSwitch, OAuth y SELinux, le permitirán organizar las distintas partes de la infraestructura de contenedores.
Kubernetes con Red Hat
Kubernetes es open source, así que no hay ninguna estructura de soporte formalizada en torno a esta tecnología, o al menos ninguna a la que podría confiarle su empresa. Si tuviera inconvenientes al implementar Kubernetes mientras se ejecuta en la producción, no se sentiría satisfecho. Tampoco sus clientes.
Imagine que Kubernetes es el motor de un automóvil. El motor puede funcionar de por sí, pero solo pasa a formar parte de un vehículo funcional cuando se conecta a la transmisión, los ejes y las ruedas. La mera instalación de Kubernetes no basta para obtener una plataforma para la producción. Para que sea totalmente funcional, se debe agregar otros elementos, como la autenticación, las redes, la seguridad, la supervisión, la gestión de los registros y otras herramientas. Allí es donde entra en juego Red Hat OpenShift, que representa el vehículo completo.
Red Hat OpenShift es la plataforma de Kubernetes para las empresas. Incluye todos los recursos tecnológicos adicionales que convierten a Kubernetes en una herramienta sólida y viable para la empresa, como los registros, las redes, la telemetría, la seguridad, la automatización y los servicios. Red Hat OpenShift incorpora a Kubernetes como uno de los elementos centrales de la plataforma, y Cloud Native Computing Foundation la ofrece como distribución certificada de Kubernetes.
Gracias a Red Hat OpenShift Container Platform, los desarrolladores pueden crear aplicaciones nuevas en contenedores, alojarlas e implementarlas en la nube con la capacidad de ajuste, la organización y el control necesarios para convertir una idea brillante en un nuevo negocio, en poco tiempo y sin complicaciones. Si busca implementar sus cargas de trabajo de Kubernetes en un servicio de nube gestionado o trasladarlas a él, OpenShift también se ofrece como plataforma de Kubernetes desarrollada en la nube en Amazon Web Services (AWS), Microsoft Azure, Google Cloud, IBM Cloud y otros proveedores.
Con OpenShift puede utilizar Red Hat Advanced Cluster Management y Red Hat Ansible® Automation Platform de manera conjunta para implementar y gestionar de manera eficiente múltiples clústeres de Kubernetes en entornos de nube pública, locales o en el borde de la red.
Caso práctico: Diseño de una plataforma de nube para ofrecer servicios bancarios innovadores
Emirates NBD, uno de los bancos más importantes de los Emiratos Árabes Unidos (EAU), buscaba una base resistente y adaptable para la transformación digital. El banco lidiaba con un sistema de implementación lento y un entorno de TI complejo. Para configurar un servidor, necesitaban hasta dos meses y demoraban más de seis meses en realizar cambios en las aplicaciones monolíticas de gran tamaño.
Optaron por Red Hat OpenShift Container Platform para organizar, integrar y gestionar los contenedores, y así crearon Sahab, la primera nube privada de un banco de Oriente Medio que se ejecuta según sea necesario. Sahab ofrece aplicaciones, sistemas y otros recursos para el desarrollo integral, desde la implementación hasta la producción, a través de un modelo de tecnología como servicio.
Gracias a la plataforma nueva, Emirates NBD mejoró la colaboración entre los equipos internos y con los partners utilizando interfaces de programación de aplicaciones (API) y microservicios. Además, el banco adoptó prácticas de desarrollo ágil y de DevOps que le permitieron acortar los ciclos de actualización y lanzamiento de las aplicaciones.
Los contenedores tienen mucho más que ofrecer.