Inicio topics Kubernetes ¿Qué es Kubernetes?
Explorar la solución Kubernetes de IBM Suscríbase para recibir actualizaciones de la nube
Ilustración con collage de pictogramas de monitor de computadora, servidor, nubes, puntos

Publicado: 11 Marzo 2024
Colaboradores: Stephanie Susnjara, Ian Smalley

¿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 desplegar en cualquier lugar para crear aplicaciones.

La palabra Kubernetes tiene su origen en el griego, que significa timonel o piloto, de ahí el timón en el logotipo de Kubernetes (enlace externo a ibm.com).

Logre flexibilidad en el lugar de trabajo con DaaS

Lea cómo el escritorio como servicio (DaaS) permite a las empresas alcanzar el mismo nivel de rendimiento y seguridad que desplegando las aplicaciones on premises.

Contenido relacionado

Regístrese para obtener la guía sobre la nube híbrida

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: Docker domina el 82 % del mercado y Kubernetes controla el 11.52 % de la cuota de mercado en 2024 (enlace externo a ibm.com).

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 de contenedores, las redes, 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) (enlace externo a ibm.com), el centro de computación nativa en la nube de código abierto y de proveedor neutral. 

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 (enlace externo a ibm.com), Kubernetes es el segundo proyecto de código abierto más grande del mundo (luego 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, la cantidad de colaboradores ha crecido a 8012, un aumento del 996 % (enlace externo a ibm.com). A partir de este artículo, los colaboradores han agregado más de 123 000 compromisos al repositorio de Kubernetes en GitHub (enlace externo a ibm.com).

¿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.

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 (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 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. 

Controller-manager: 
un conjunto de controladores integrados, el controller-manager de Kubernetes ejecuta un bucle de control que monitorea 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 tiene una función similar al enlace controller-manager. Se vincula a un API del 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 debe 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

En la actualidad, existen más de 90 ofertas certificadas de Kubernetes (enlace externo a ibm.com), 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 en 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 y neutral en cuanto a proveedor para crear sistemas de integración y entrega continua (CI/CD) gobernados por la Continuous Delivery Foundation (CDF) (enlace externo a ibm.com).

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 la nube nativa 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. 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 aprendizaje automático ( 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
Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, los desarrolladores de OpenShift tienen una forma rápida y segura de usar contenedores y desplegar cargas de trabajo empresariales en clústeres de Kubernetes.

Conozca Red Hat OpenShift
IBM Cloud Kubernetes Service

Despliegue clústeres seguros y de alta disponibilidad en una experiencia nativa de Kubernetes.

Explore IBM Cloud Kubernetes Service
IBM Cloud Pak for Applications

Entregue un escenario de aplicación que se transforme con su negocio. IBM® Cloud Pak for Applications proporciona la máxima flexibilidad, ya sea que esté creando nuevos servicios y aplicaciones nativos de la nube, o refactorizando o cambiando la plataforma de aplicaciones existentes.

Explore IBM Cloud Pak for Applications
IBM Cloud Satellite

Despliegue y ejecute aplicaciones de forma coherente en entornos on premises, de edge computing y de nube pública desde cualquier proveedor de nube, utilizando un conjunto común de servicios en la nube que incluyen cadenas de herramientas, bases de datos e IA.

Explore IBM Cloud Satellite Solutions
IBM Cloud Code Engine

IBM Cloud Code Engine, una plataforma serverless totalmente gestionada, le permite ejecutar su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor totalmente gestionado.

Explore Code Engine
Recursos Contenedores en la empresa

IBM® Research documenta el creciente impulso de la adopción de contenedores y Kubernetes.

TI flexible, resiliente y segura para su nube híbrida

Los contenedores forman parte de una estrategia de nube híbrida que permite crear y gestionar cargas de trabajo desde cualquier lugar.

¿Qué es sin servidor?

Sin servidor un modelo de ejecución y desarrollo de aplicaciones en la nube que permite a los desarrolladores crear y ejecutar código sin gestionar servidores ni pagar por una infraestructura en la nube inactiva.

Conceptos básicos de YAML en Kubernetes

Explore un ejemplo de cómo se utiliza un archivo YAML en Kubernetes.

¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software en las que el código de la aplicación se empaqueta junto con sus bibliotecas y dependencias, de manera común, para que el código pueda ejecutarse en cualquier lugar, ya sea en un escritorio, en TI tradicional o en la nube.

¿Qué es Docker?

Docker es una plataforma de código abierto que permite a los desarrolladores crear, desplegar, ejecutar, actualizar y gestionar contenedores, es decir, componentes ejecutables estandarizados que combinan el código fuente de las aplicaciones con las bibliotecas y dependencias del sistema operativo (SO), necesarias para ejecutar ese código en cualquier entorno.

Dé el siguiente paso

Red Hat OpenShift on IBM Cloud ofrece a los desarrolladores una forma rápida y segura de contenerizar e implementar cargas de trabajo empresariales en clústeres de Kubernetes. Descargue tareas tediosas y repetitivas que impliquen gestión de seguridad, gestión de cumplimiento, gestión de implementación y gestión continua del ciclo de vida. 

Explore Red Hat OpenShift en IBM Cloud Empiece sin costo