Kubernetes, también conocida como k8s o kube, es una plataforma de orquestación de contenedores de código abierto diseñada para programar y automatizar el despliegue, la gestión y el escalamiento de aplicaciones en contenedores.
Hoy en día, Kubernetes y el ecosistema más amplio de tecnologías relacionadas con contenedores se fusionaron para formar los componentes básicos de la infraestructura de nube moderna. Este ecosistema permite a las organizaciones ofrecer un entorno de computación multinube híbrido altamente productivo para realizar tareas complejas relacionadas con la infraestructura y las operaciones. También admite el desarrollo nativo de la nube al permitir un enfoque de compilación única y despliegue en cualquier lugar para crear aplicaciones.
La palabra Kubernetes proviene del griego y significa timonel o piloto, de ahí el timón en el logotipo de Kubernetes.
Los contenedores son componentes de aplicaciones livianos y ejecutables que combinan el código fuente con todas las bibliotecas y dependencias del sistema operativo (SO) necesarias para ejecutar el código en cualquier entorno.
Los contenedores usan una forma de virtualización del SO que permite que varias aplicaciones compartan una sola instancia de un SO aislando los procesos y controlando la cantidad de CPU, memoria y disco a la que pueden acceder esos procesos. Debido a que son más pequeños, más eficientes en el uso de los recursos y más portátiles que las máquinas virtuales (VM), los contenedores se convirtieron en las unidades de cómputo de facto de las aplicaciones nativas de la nube modernas. Los contenedores también son más eficientes en el uso de los recursos. Le permiten ejecutar más aplicaciones en menos máquinas (servidores virtuales y servidores físicos) con menos instancias de SO.
Dado que los contenedores pueden ejecutarse de manera constante en cualquier lugar, se volvieron críticos para la arquitectura subyacente que admite entornos híbridos multinube, la combinación de on premises, nube privada, nube pública y más de un servicio en la nube de más de un proveedor de nube.
Docker es la herramienta más popular para crear y ejecutar contenedores Linux. Si bien las primeras formas de contenedores se introdujeron hace décadas (con tecnologías, como FreeBSD Jails y AIX Workload Partitions), los contenedores se democratizaron en 2013 cuando Docker los llevó a las masas con una nueva implementación amigable para los desarrolladores y la nube.
Docker comenzó como un proyecto de código abierto, pero hoy también se refiere a Docker Inc., la empresa que produce Docker, un kit de herramientas comerciales para contenedores que se basa en el proyecto de código abierto (y aporta esas mejoras a la comunidad de código abierto).
Docker se basó en la tecnología tradicional de contenedores de Linux, pero permite una virtualización más granular de los procesos del kernel de Linux y agrega características para hacer que los contenedores sean más accesibles para que los desarrolladores los construyan, desplieguen, gestionen y protejan.
Si bien hoy existen plataformas alternativas de ejecución de contenedores, como Open Container Initiative (OCI), CoreOS y Canonical (Ubuntu) LXD, Docker es la opción dominante. Además, Docker se ha convertido en sinónimo de contenedores y a veces se confunde como un competidor de tecnologías complementarias, como Kubernetes.
En la actualidad, Docker y Kubernetes son las principales herramientas de contenerización, con Docker dominando el 82 % del mercado y Kubernetes controlando el 11.52 % de la cuota de mercado en 2024.
A medida que proliferaban los contenedores, hoy en día, una organización podría tener cientos o miles de ellos. Se necesitan equipos de operaciones para programar y automatizar el despliegue del contenedor, la conexión en red, la escalabilidad y la disponibilidad. Ingrese la orquestación de contenedores.
Basado en Borg, la plataforma interna de orquestación de contenedores de Google, Kubernetes se presentó al público como una herramienta de código abierto en 2014, con Microsoft, Red Hat, IBM y otros importantes actores tecnológicos como primeros afiliados a la comunidad de Kubernetes. En 2015, Google donó Kubernetes a la Cloud Native Computing Foundation (CNCF), el centro de código abierto y proveedor neutral de la computación nativa de la nube.
Kubernetes se convirtió en el primer proyecto alojado de CNCF en marzo de 2016. Desde entonces, Kubernetes se convirtió en la herramienta de orquestación de contenedores más empleada para ejecutar cargas de trabajo basadas en contenedores en todo el mundo. En un informe de CNCF, Kubernetes es el segundo proyecto de código abierto más grande del mundo (después de Linux) y la principal herramienta de orquestación de contenedores para el 71 % de las empresas de Fortune 100.
En 2018, Kubernetes fue el primer proyecto graduado del CNCF al convertirse en uno de los proyectos de código abierto de más rápido crecimiento de la historia. Aunque otras opciones de orquestación de contenedores, sobre todo Docker Swarm y Apache Mesos, ganaron cierta popularidad al principio, Kubernetes se convirtió rápidamente en la más adoptada.
Desde que Kubernetes se unió al CNCF en 2016, el número de colaboradores aumentó a 8012, un aumento del 996 %. Al momento de escribir este artículo, los colaboradores han agregado más de 123 000 confirmaciones al repositorio de Kubernetes en GitHub.
Boletín de la industria
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Kubernetes programa y automatiza tareas relacionadas con contenedores a lo largo del ciclo de vida de la aplicación, incluidas las siguientes.
Despliegue una cantidad específica de contenedores en un host específico y manténgalos funcionando en un estado deseado.
Una implementación es un cambio en un despliegue. Kubernetes le permite iniciar, pausar, reanudar o revertir implementaciones.
Kubernetes puede exponer automáticamente un contenedor a Internet o a otros contenedores mediante el uso de un nombre de sistema de nombres de dominio (DNS) o una dirección IP.
Configure Kubernetes para montar almacenamiento persistente local o en la nube para sus contenedores según sea necesario.
Según el uso de la CPU o las métricas personalizadas, el equilibrio de carga de Kubernetes puede distribuir la carga de trabajo en toda la red para mantener el rendimiento y la estabilidad.
Cuando el tráfico aumenta, el escalado automático de Kubernetes puede activar nuevos clústeres según sea necesario para manejar la carga de trabajo adicional.
Cuando se produce un error en un contenedor, Kubernetes puede reiniciarlo o reemplazarlo automáticamente para evitar el tiempo de inactividad. También puede retirar contenedores que no cumplan con los requisitos de control de estado.
El despliegue de Kubernetes implica clústeres, los componentes básicos de la arquitectura de Kubernetes. Los clústeres están formados por nodos, cada uno de los cuales representa un único host informático, ya sea una máquina física (bare metal server) o una máquina virtual.
La arquitectura de Kubernetes consta de dos partes principales: los componentes del panel de control y los componentes que gestionan los nodos individuales.
Un nodo está formado por pods. Se trata de grupos de contenedores que comparten los mismos recursos informáticos y la misma red. También son la unidad de escalabilidad en Kubernetes. Si un contenedor de un pod está recibiendo más tráfico del que puede soportar, Kubernetes replicará el pod a otros nodos del clúster.
El plano de control maneja automáticamente la programación de los pods en los nodos de un clúster.
Cada clúster tiene un nodo maestro que maneja el plano de control del clúster. El nodo maestro ejecuta un servicio de programación que automatiza cuándo y dónde se despliegan los contenedores en función de los requisitos de despliegue establecidos por el desarrollador y la capacidad informática disponible.
Los componentes principales de un clúster de Kubernetes son kube-apiserver, etcd, kube-scheduler, kube-controller-manager y cloud-controller-manager:
Servidor API: el servidor de interfaz de programación de aplicaciones (API) en Kubernetes expone la API de Kubernetes (la interfaz empleada para gestionar, crear y configurar clústeres de Kubernetes) y sirve como punto de entrada para todos los comandos y consultas.
etcd: El etcd es un almacén de valores clave distribuido de código abierto que se emplea para mantener y gestionar la información crítica que los sistemas distribuidos necesitan para seguir funcionando. En Kubernetes, el etcd gestiona los datos de configuración, los datos de estado y los metadatos.
Programador: este componente rastrea los pods recién creados y selecciona nodos para que se ejecuten. El programador considera la disponibilidad de recursos y las restricciones de asignación, los requisitos de hardware y software, y más.
Controlador-administrador: un conjunto de controladores integrados, el controlador-administrador de Kubernetes ejecuta un bucle de control que monitorea el estado compartido del clúster y se comunica con el servidor de API para administrar recursos, pods o endpoints de servicio. El controlador-administrador consta de procesos separados que se agrupan para reducir la complejidad y se ejecutan en un solo proceso.
nube-controlador-administrador: este componente tiene una función similar al enlace controlador-administrador. Se vincula a la API de un proveedor de la nube y separa los componentes que interactúan con esa plataforma en la nube de aquellos que solo interactúan dentro del clúster.
Los nodos de trabajo son responsables de desplegar, ejecutar y gestionar aplicaciones en contenedores:
Kubelet: Kubelet es un agente de software que recibe y ejecuta órdenes desde el nodo maestro y ayuda a garantizar que los contenedores se ejecuten en un pod.
Kube-proxy: instalado en cada nodo de un clúster, el kube-proxy mantiene las reglas de red en el host y monitorea los cambios en los servicios y pods.
Hoy en día, hay más de 90 ofertas certificadas de Kubernetes, incluidas plataformas de gestión de nivel empresarial que proporcionan herramientas, actualizaciones y capacidades complementarias que aceleran el desarrollo y la entrega de aplicaciones en contenedores.
Si bien Kubernetes es la tecnología elegida para orquestar aplicaciones de la nube basadas en contenedores, depende de otros componentes, que van desde redes, ingreso, equilibrio de carga, almacenamiento, integración continua y entrega continua (CI / CD) y más, para ser completamente funcional.
Si bien es posible alojar automáticamente un clúster de Kubernetes en un entorno basado en la nube, la configuración y la administración pueden ser complejas para una organización empresarial. Aquí es donde entran los servicios gestionados de Kubernetes.
Con los servicios gestionados de Kubernetes, el proveedor suele gestionar los componentes del plano de control de Kubernetes. El proveedor de servicios gestionados ayuda a automatizar los procesos rutinarios de actualización, equilibrio de carga, escalado y supervisión. Por ejemplo, Red Hat OpenShift es un servicio de Kubernetes que se puede desplegar en cualquier entorno y en las principales nubes públicas, incluidos Amazon Sitio web Services (AWS), Microsoft Azure, Google Cloud e IBM® Cloud. Muchos proveedores de la nube también ofrecen sus propios servicios gestionados de Kubernetes.
El monitoreo de Kubernetes se refiere a la recopilación y el análisis de datos relacionados con el estado, el rendimiento y las características de costo de las aplicaciones en contenedores que se ejecutan dentro de un clúster de Kubernetes.
El monitoreo de los clústeres Kubernetes permite a los administradores y usuarios realizar un seguimiento del tiempo de actividad, el uso de los recursos del clúster y la interacción entre los componentes del clúster. El monitoreo ayuda a identificar rápidamente problemas, como recursos insuficientes, fallos y nodos que no pueden unir al clúster. Las soluciones actuales de monitoreo de Kubernetes incluyen herramientas automatizadas para la gestión del rendimiento de las aplicaciones (APM), la observabilidad, la gestión de los recursos de las aplicaciones (ARM) y mucho más.
Kubernetes puede desplegar y escalar pods, pero no puede gestionar ni automatizar el enrutamiento entre ellos y no proporciona ninguna herramienta para monitorear, proteger o depurar estas conexiones.
A medida que crece la cantidad de contenedores en un clúster, la cantidad de posibles rutas de conexión entre ellos aumenta exponencialmente. Por ejemplo, 2 contenedores tienen 2 conexiones potenciales, pero 10 pods tienen 90, lo que crea un tormento en la configuración y administración.
Istio, una capa de malla de servicios configurable y de código abierto, proporciona una solución conectando, monitoreando y asegurando contenedores en un clúster de Kubernetes. Otros beneficios significativos incluyen capacidades para mejorar la depuración y un panel que los equipos y administradores de DevOps pueden usar para monitorear la latencia, los errores de tiempo en servicio y otras características de las conexiones entre contenedores.
Knative es una plataforma de código abierto que proporciona una fácil acceso a la computación sin servidor, el modelo de desarrollo y ejecución de aplicaciones de computación en la nube que permite a los desarrolladores crear y ejecutar código de aplicaciones sin aprovisionar ni administrar servidores o infraestructura de backend.
En lugar de desplegar una instancia continua de código que permanece inactiva mientras se esperan solicitudes, sin servidor trae el código según sea necesario, escalándolo hacia arriba o hacia abajo a medida que fluctúa la demanda y, a continuación, elimina el código cuando no está en uso. El sistema sin servidor evita el desperdicio de capacidad y potencia de cómputo, y reduce los costos porque usted solo paga para ejecutar el código cuando se está ejecutando.
Tekton es un marco de código abierto e independiente del proveedor para crear sistemas de integración y entrega continuas (CI/CD) gobernados por la Continuous Delivery Foundation (CDF).
Como marco de Kubernetes, Tekton ayuda a modernizar la entrega continua al proporcionar especificaciones de la industria para pipelines, flujos de trabajo y otros componentes básicos, lo que agiliza y facilita el despliegue en múltiples proveedores de la nube o entornos híbridos.
Vale la pena señalar que Tekton es el sucesor de Knative Build, que todavía es compatible con algunas distribuciones de Knative. Los pipelines de Tekton se convirtieron en el estándar para crear imágenes de contenedores y desplegarlas en un registro de contenedores en un entorno de Kubernetes.
Las organizaciones empresariales emplean Kubernetes para dar soporte a los siguientes casos de uso, todos los cuales desempeñan un papel crucial en la infraestructura de TI moderna.
Nativo de la nube es un enfoque de desarrollo de software para crear, desplegar y gestionar aplicaciones basadas en la nube. El principal beneficio de nativo de la nube es que permite a DevOps y a otros equipos codificar una vez y desplegar en cualquier infraestructura en la nube de cualquier proveedor de servicios en la nube.
Este proceso de desarrollo moderno se basa en microservicios, un enfoque en el que una sola aplicación se conforma de muchos componentes o servicios más pequeños, poco acoplados y desplegables de forma independiente, que se despliegan en contenedores gestionados por Kubernetes.
Kubernetes ayuda a garantizar que cada microservicio tenga los recursos que necesita para ejecutar de manera efectiva, al tiempo que minimiza la sobrecarga operativa asociada con la administración manual de múltiples contenedores.
La nube híbrida combina y unifica la nube pública, la nube privada y la infraestructura del centro de datos on premises para crear una infraestructura de TI única, flexible y rentable.
En la actualidad, la nube híbrida se ha fusionado con servicios multinube y de nube pública de más de un proveedor de nube, para crear un entorno multinube híbrido.
Un enfoque de multinube híbrida crea una mayor flexibilidad y reduce la dependencia de una organización de un proveedor, evitando el vendor lock-in (dependencia de proveedores). Dado que Kubernetes crea la base para el desarrollo nativo de la nube, es clave para la adopción de la multinube híbrida.
Kubernetes admite el despliegue de aplicaciones en la nube a gran escala con autoescalado. Este proceso permite ampliar o reducir las aplicaciones, ajustarlas automáticamente a los cambios de la demanda, con rapidez, eficacia y un tiempo de inactividad mínimo.
La escalabilidad elástica del despliegue de Kubernetes significa que se pueden agregar o eliminar recursos en función de los cambios en el tráfico de usuarios, como las flash sales en sitios web minoristas.
Kubernetes proporciona la plataforma en la nube moderna necesaria para respaldar la modernización de las aplicaciones, la migración y la transformación de aplicaciones heredadas monolíticas en aplicaciones en la nube basadas en la arquitectura de microservicios.
La automatización es el núcleo de DevOps, que acelera la entrega de software de mayor calidad combinando y automatizando el trabajo de los equipos de desarrollo de software y operaciones de TI.
Kubernetes ayuda a los equipos de DevOps a crear y actualizar aplicaciones rápidamente mediante la automatización de la configuración y el despliegue de aplicaciones.
Los modelos de machine learning (ML) y los modelos de lenguaje grandes (LLM) que admiten la IA incluyen componentes que serían difíciles de gestionar por separado y requerirían mucho tiempo. Al automatizar la configuración, el despliegue y la escalabilidad en todos los entornos de nube, Kubernetes ayuda a proporcionar la agilidad y flexibilidad necesarias para entrenar, probar y desplegar estos modelos complejos.
Si está listo para empezar a trabajar con Kubernetes o desea desarrollar sus habilidades con las herramientas del ecosistema de Kubernetes y Kubernetes, pruebe uno de estos tutoriales:
Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.
Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto y despliegue rápido.
Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de IBM de asesoramiento sobre la nube. Descubra cómo crear conjuntamente soluciones, acelerar la transformación digital y optimizar el rendimiento a través de estrategias de nube híbrida y asociaciones de expertos.