¿Qué es Kubernetes?

Rascacielos modernos al atardecer

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

¿Qué es Kubernetes?

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.

Antecedentes: Contenedores, Docker y Kubernetes

¿Qué son los contenedores?

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.

¿Qué es Docker?

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.

Orquestación de contenedores con Kubernetes

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.

Las últimas noticias tecnológicas, respaldadas por los insights de expertos

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.

¡Gracias! Ya está suscrito.

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.

¿Qué hace Kubernetes?

Kubernetes programa y automatiza tareas relacionadas con contenedores a lo largo del ciclo de vida de la aplicación, incluidas las siguientes.

Despliegue

Despliegue una cantidad específica de contenedores en un host específico y manténgalos funcionando en un estado deseado.

Implementaciones

Una implementación es un cambio en un despliegue. Kubernetes le permite iniciar, pausar, reanudar o revertir implementaciones.

Descubrimiento de servicios

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.

Aprovisionamiento de almacenamiento

Configure Kubernetes para montar almacenamiento persistente local o en la nube para sus contenedores según sea necesario.

Equilibrio de carga

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.

Escalado automático

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.

Autocorrección para alta disponibilidad

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.

OpenShift 

Vea cómo se ejecutan los contenedores en la nube con OpenShift

Los contenedores facilitan la creación, ejecución y movimiento de aplicaciones entre diferentes entornos. Este video muestra cómo OpenShift on IBM Cloud ayuda a los equipos a gestionar aplicaciones en contenedores de manera eficiente, haciendo que el desarrollo en la nube sea más rápido y confiable.

Arquitectura y componentes de Kubernetes

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.

Componentes del plano de control

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.

Componentes del nodo

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.

Otros conceptos y terminología de Kubernetes

  • ReplicaSet: un ReplicaSet mantiene un conjunto estable de pods de réplica para cargas de trabajo específicas.

  • Despliegue: el despliegue controla la creación y el estado de la aplicación en contenedores y la mantiene en funcionamiento. Especifica cuántas réplicas de un pod deben ejecutarse en el clúster. Si un pod falla, el despliegue crea uno nuevo.

  • Kubectl: los desarrolladores gestionan las operaciones de clúster mediante kubectl, una herramienta para desarrolladores que consta de una interfaz de línea de comandos (CLI) que se comunica directamente con la API de Kubernetes.

  • DaemonSets: los DaemonSets son responsables de ayudar a garantizar que se cree un pod en cada nodo del clúster.

  • Complementos: los complementos de Kubernetes amplían las funciones e incluyen Cluster DNS (un servidor DNS que proporciona registros DNS a Kubernetes), Web UI (un panel de Kubernetes para gestionar un clúster), etc.

  • Servicio: un servicio de Kubernetes es una capa de abstracción que define un conjunto lógico de pods y cómo acceder a ellos. Un servicio expone una aplicación de red que se ejecuta en uno o más pods de un clúster. Proporciona una forma abstracta de equilibrar la carga de los pods.

El ecosistema de Kubernetes

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.

Servicios gestionados de Kubernetes

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.

Herramientas de supervisión 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.

Malla de servicio Istio

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.

Computación nativa y sin servidor

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



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.

Casos de uso 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.

Arquitectura de microservicios o desarrollo nativo de la nube

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.

Entornos híbridos multinube

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.

Aplicaciones a escala

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.

Modernización de aplicaciones

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.

Prácticas de DevOps

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.

Inteligencia artificial (IA) y aprendizaje automático (aprendizaje automático)

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.

Tutoriales de Kubernetes

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:

Soluciones relacionadas
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.

Conozca Red Hat OpenShift
Soluciones de contenedores

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.

Explorar contenedores
Servicios de consultoría en la nube 

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.

Servicios en la nube
Dé el siguiente paso

Modernice su infraestructura con las soluciones de contenedores de IBM. Ejecute, escale y gestione cargas de trabajo en contenedores en todos los entornos con flexibilidad, seguridad y eficiencia mediante el uso de la plataforma integral de contenedores de IBM.

Explore las soluciones de contenedores Cree su cuenta gratuita de IBM Cloud