¿Qué es Kubernetes?

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Definición de 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 la implementación, la gestión y el escalado de aplicaciones en contenedores.

En la actualidad, Kubernetes y el ecosistema más amplio de tecnologías relacionadas con los contenedores se han fusionado para formar los componentes básicos de la infraestructura moderna en la nube. Este ecosistema permite a las organizaciones ofrecer un entorno de cómputo de multicloud híbrido altamente productivo para realizar tareas complejas relacionadas con la infraestructura y las operaciones. También es compatible con el desarrollo nativo de la nube al permitir un enfoque de creación única e implementación en cualquier lugar para crear aplicaciones.

La palabra Kubernetes proviene del griego y significa timonel o piloto, de ahí el timón en el logo de Kubernetes.

Antecedentes: contenedores, Docker y Kubernetes

¿Qué son los contenedores?

Los contenedores son componentes de aplicación ligeros 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 se benefician de una forma de virtualización del sistema operativo que permite que varias aplicaciones compartan una única instancia de un sistema operativo aislando los procesos y controlando la cantidad de CPU, memoria y disco a los que pueden acceder esos procesos. Al ser más pequeños, consumir menos recursos y ser más portátiles que las máquinas virtuales (VM), los contenedores se han convertido en las unidades de computación de facto de las aplicaciones modernas nativas de la nube. Los contenedores también son más eficientes en cuanto a recursos. Le permiten ejecutar más aplicaciones en menos máquinas (servidores virtuales y servidores físicos) con menos instancias de sistema operativo.

Dado que los contenedores pueden ejecutarse de forma coherente en cualquier lugar, se han vuelto críticos para la arquitectura subyacente que admite entornos multicloud híbridos, la combinación de en las instalaciones, nube privada, nube pública y más de un servicio cloud de más de un proveedor de nube.

¿Qué es Docker?

Docker es la herramienta más popular para crear y ejecutar contenedores de Linux. Aunque 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 fácil de usar para desarrolladores y en 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 de contenedores comerciales 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 añade características para que los desarrolladores puedan construir, implementar, gestionar y proteger los contenedores de forma más accesible.

Aunque hoy en día existen plataformas alternativas de tiempo 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 con 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 puede tener cientos o miles de ellos. Se necesitan equipos de operaciones para programar y automatizar la implementación de contenedoreslas redes, la escalabilidad y la disponibilidad. Introducción a 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 actores tecnológicos importantes que se incorporaron como primeros miembros de la comunidad Kubernetes. En 2015, Google donó Kubernetes a la Cloud Native Computing Foundation (CNCF), el centro de código abierto y neutral de proveedores de la computación nativa de la nube.

Kubernetes se convirtió en el primer proyecto alojado del CNCF en marzo de 2016. Desde entonces, Kubernetes se ha convertido en la herramienta de orquestación de contenedores más utilizada 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 de posgrado del CNCF, convirtiéndose 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 algo de tracción desde el principio, Kubernetes se convirtió rápidamente en la más adoptada.

Desde que Kubernetes se unió al CNCF en 2016, el número de contribuyentes ha aumentado a 8012, un aumento del 996 %. En el momento de escribir este artículo, los colaboradores han añadido más de 123 000 confirmaciones al repositorio de Kubernetes en GitHub.

Las últimas novedades sobre tecnología, respaldadas por conocimientos de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Se ha suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. 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 las tareas relacionadas con los contenedores a lo largo del ciclo de vida de la aplicación, incluidas las siguientes.

Implementación

Implemente un número específico de contenedores en un host específico y manténgalos funcionando en el estado deseado.

Despliegues

Un despliegue es un cambio en una implementación. Kubernetes le permite iniciar, pausar, reanudar o revertir despliegues.

Descubrimiento de servicios

Kubernetes puede exponer automáticamente un contenedor a Internet o a otros contenedores utilizando un nombre de sistema de nombres de dominio (DNS) o una dirección IP.

Almacenamiento suministrado

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

Equilibrio de carga

En función del uso de la CPU o de 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 autoescalado de Kubernetes puede crear nuevos clústeres según sea necesario para gestionar la carga de trabajo adicional.

Autorreparación para una alta disponibilidad.

Cuando un contenedor falla, 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 comprobación de estado.

IBM Cloud

Red Hat OpenShift AI en IBM Cloud: Implemente cargas de trabajo de IA

Utilice las capacidades de IA con Red Hat OpenShift on IBM Cloud. Este vídeo explora cómo crear, implementar y gestionar cargas de trabajo de IA de manera eficiente con una plataforma escalable de operaciones de machine learning.

Arquitectura y componentes de Kubernetes

La implementación 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 de computación, ya sea una máquina física (servidor bare metal) 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 consta de 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 en un pod está ganando más tráfico del que puede gestionar, Kubernetes replicará el pod en otros nodos del clúster.

El plano de control gestiona 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 gestiona el plano de control del clúster. El nodo maestro ejecuta un servicio de programación que automatiza cuándo y dónde se implementan los contenedores en función de los requisitos de implementación establecidos por el desarrollador y de la capacidad informática disponible.

Los componentes principales en un clúster de Kubernetes son el kube-apiserver, etcd, kube-scheduler, kube-controller-manager y cloud-controller-manager:

API server:
 el servidor de interfazde programación de aplicaciones (API) en Kubernetes expone la API de Kubernetes (la interfaz utilizada 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 almacenamiento de clave-valor distribuido de código abierto que se utiliza 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.

Scheduler: 
este componente realiza un seguimiento de los pods recién creados y selecciona los nodos en los que se ejecutarán. El scheduler tiene en cuenta la disponibilidad de recursos y las restricciones de asignación, los requisitos de hardware y software, etc.

Controller-manager: 
un conjunto de controladores integrados, el controller-manager de Kubernetes ejecuta un bucle de control que monitoriza el estado compartido del clúster y se comunica con el servidor de API para gestionar recursos, pods o endpoints de servicio. El controller-manager consta de procesos separados que se agrupan para reducir la complejidad y se ejecutan en un solo proceso.

Cloud-controller-manager: 
este componente es similar en función al enlace controller-manager. Se vincula a la API de un proveedor de servicios en 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 de nodo

Los nodos de trabajo son responsables de implementar, ejecutar y administrar aplicaciones en contenedores:

Kubelet:
Kubelet es un agente de software que recibe y ejecuta órdenes del 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 monitoriza 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.

  • Implementación: la implementación 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, la implementación crea uno nuevo.

  • Kubectl: los desarrolladores gestionan las operaciones del clúster mediante kubectl, una herramienta de 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 DNS de clúster (un servidor DNS que proporciona registros DNS a Kubernetes), IU web (un panel de control de Kubernetes para gestionar un clúster) y mucho más.

  • 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

En la actualidad, 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

Aunque Kubernetes es la tecnología preferida para orquestar aplicaciones en la nube basadas en contenedores, depende de otros componentes, que van desde las redes, la entrada, el equilibrio de carga, el almacenamiento, la integración continua y la entrega continua (CI/CD) y más, para ser completamente funcional.

Aunque es posible autoalojar un clúster de Kubernetes en un entorno basado en la nube, la configuración y la gestión pueden ser complejas para una organización empresarial. Aquí es donde entran en juego 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 monitorización. Por ejemplo, Red Hat OpenShift es un servicio Kubernetes que se puede implementar en cualquier entorno y en todas las nubes públicas, incluidos Amazon Web Services (AWS), Microsoft Azure, Google Cloud e IBM® Cloud. Muchos proveedores de servicios en la nube también ofrecen sus propios servicios gestionados de Kubernetes Service.

Herramientas de monitorización de Kubernetes

La monitorización de Kubernetes se refiere a la recopilación y el análisis de datos relacionados con las características de salud, rendimiento y coste de las aplicaciones en contenedores que se ejecutan dentro de un clúster de Kubernetes.

La monitorización de los clústeres de 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. La monitorización ayuda a identificar rápidamente problemas como recursos insuficientes, fallos y nodos que no pueden unirse al clúster. Las soluciones de monitorización de Kubernetes actuales incluyen herramientas automatizadas para la gestión del rendimiento de las aplicaciones (APM), la observabilidad, la gestión de recursos de aplicaciones (ARM) y más.

Malla de servicio Istio

Kubernetes puede implementar y escalar pods, pero no puede administrar ni automatizar el enrutamiento entre ellos y no proporciona ninguna herramienta para monitorizar, proteger o depurar estas conexiones.

A medida que crece el número de contenedores en un clúster, el número de posibles rutas de conexión entre ellos aumenta exponencialmente. Por ejemplo, dos contenedores tienen dos conexiones potenciales, pero diez pods tienen 90, lo que crea una posible pesadilla de configuración y gestión.

Istio, una capa de malla de servicios configurable y de código abierto, ofrece una solución mediante la conexión, supervisión y protección de contenedores en un clúster de Kubernetes. Otros beneficios significativos incluyen capacidades para mejorar la depuración y un panel de control 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.

Informática nativa y sin servidor

Knative (pronunciado ‘kay-native’) es una plataforma de código abierto que proporciona una fácil vía de acceso a la computación sin servidor, el modelo de desarrollo y ejecución de aplicaciones de cloud computing que permite a los desarrolladores crear y ejecutar código de aplicaciones sin aprovisionar ni administrar servidores o infraestructura de backend.

En lugar de implementar una instancia continua de código que permanece inactiva a la espera de solicitudes, el código sin servidor se implementa cuando es necesario, ampliándolo o reduciéndolo según la demanda fluctúe, y luego se retira cuando no se está utilizando. La tecnología sin servidor evita el desperdicio de capacidad informática y energía, y reduce los costes, ya que solo paga por 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, Tekton ayuda a modernizar la entrega continua proporcionando especificaciones de sectores para pipelines, flujos de trabajo y otros componentes básicos, lo que agiliza y facilita la implementación en múltiples proveedores de servicios en la nube o entornos híbridos.

Cabe destacar que Tekton es el sucesor de Knative Build, que sigue siendo compatible con algunas distribuciones de Knative. Los pipelines de Tekton se han convertido en el estándar para crear imágenes de contenedores e implementarlas en un registro de contenedor en un entorno de Kubernetes.

Casos de uso de Kubernetes

Las organizaciones empresariales utilizan Kubernetes para respaldar los siguientes casos de uso que desempeñan un papel crucial en la composición de 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, implementar y gestionar aplicaciones basadas en la nube. El principal beneficio del enfoque nativo de la nube es que permite a DevOps y a otros equipos codificar una vez e implementar en cualquier infraestructura de nube de cualquier servicio en la nube.

Este moderno proceso de desarrollo se basa en microservicios, un enfoque en el que una sola aplicación se compone de muchos componentes o servicios más pequeños, poco acoplados e independientes, que se implementan en contenedores gestionados por Kubernetes.

Kubernetes ayuda a garantizar que cada microservicio tenga los recursos que necesita para ejecutarse de manera efectiva, al tiempo que minimiza la sobrecarga operativa asociada con la administración manual de varios contenedores.

Entornos multicloud híbridos

El cloud híbrido combina y unifica la nube pública, la nube privada y la infraestructura del centro de datos en las instalaciones para crear una infraestructura de TI única, flexible y coste-óptima.

Hoy en día, el cloud híbrido se ha fusionado con la multinube, servicios de nube pública de más de un proveedor de nube, para crear un entorno multicloud híbrido.

Un enfoque de multicloud híbrido crea una mayor flexibilidad y reduce la dependencia de una organización de un proveedor, evitando la dependencia del proveedor. Dado que Kubernetes crea la base para el desarrollo nativo de la nube, es clave para la adopción de multicloud híbrido.

Aplicaciones a escala

Kubernetes admite la implementación de aplicaciones en la nube a gran escala con autoescalado. Este proceso permite que las aplicaciones se escalen hacia arriba o hacia abajo, ajustándose a los cambios de demanda automáticamente, con velocidad, eficiencia y tiempo de inactividad mínimo.

La escalabilidad elástica de la implementación de Kubernetes significa que se pueden añadir o eliminar recursos en función de los cambios en el tráfico de usuarios, como las ventas flash en los sitios web minoristas.

Modernización de aplicaciones

Kubernetes proporciona la plataforma en la nube moderna necesaria para respaldar la modernización de aplicaciones, la migración y la transformación de aplicaciones heredadas monolíticas en aplicaciones en la nube basadas en una 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 DevOps a crear y actualizar aplicaciones rápidamente automatizando la configuración y la implementación de aplicaciones.

Inteligencia artificial (IA) y machine learning (ML)

Los modelos de ML y los modelos de lenguaje de gran tamaño (LLM) que admiten la IA incluyen componentes que serían difíciles y llevarían mucho tiempo gestionar por separado. Al automatizar la configuración, la implementación y la escalabilidad en entornos de nube, Kubernetes ayuda a proporcionar la agilidad y flexibilidad necesarias para entrenar, probar e implementar 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.

Descubra 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 e implementación rápida.

Explore los contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.

Servicio en la nube
Dé el siguiente paso

Comience con una plataforma Red Hat OpenShift totalmente gestionada o explore la flexibilidad del ecosistema IBM Cloud Kubernetes. Acelere su proceso de desarrollo e implementación con soluciones escalables y seguras adaptadas a sus necesidades.

Descubra Red Hat OpenShift Explore Kubernetes