¿Qué es Kubernetes?
Kubernetes es una plataforma open source para la organización en contenedores que automatiza la implementación, la gestión y el ajuste de las aplicaciones que se alojan allí. Actúa como un motor operativo para la infraestructura de nube y elimina los pasos manuales necesarios para configurar y ejecutar aplicaciones o asignar recursos.
Kubernetes es un proyecto de Cloud Native Computing Foundation (CNCF) que se presentó por primera vez en 2014 y que adquirió una gran popularidad entre las empresas como plataforma para ejecutar aplicaciones y servicios distribuidos a gran escala.
¿Cuáles son los conceptos básicos de Kubernetes?
Los conceptos básicos de Kubernetes giran en torno al funcionamiento conjunto de los clústeres, los nodos y los pods para ejecutar las aplicaciones. Los clústeres representan todo el sistema, los nodos son las máquinas individuales que realizan el trabajo y los pods son las unidades implementables más pequeñas que contienen los contenedores de las aplicaciones.
Los contenedores agrupan el código, la configuración y las dependencias de una aplicación, lo que permite que se ejecute como un proceso aislado con sus propios recursos. Cada aplicación obtiene su propio contenedor o varios de ellos, que se organizan en pods de Kubernetes.
Se puede ejecutar Kubernetes en servidores dedicados (bare metal), máquinas virtuales, proveedores de nube pública, nubes privadas o entornos de nube híbrida. Una de las principales ventajas de Kubernetes es que funciona en muchos tipos de infraestructura.
Como se explica en los detalles de implementación de Kubernetes, su diseño ayuda a los usuarios a seguir tres principios básicos. Una implementación de Kubernetes debe reunir las siguientes características:
- Seguridad. Debe seguir las prácticas recomendadas de seguridad más recientes.
- Facilidad de uso. Debe poder operarse con algunos comandos sencillos.
- Capacidad de expansión. No debe favorecer a un solo proveedor. Además, debe poder personalizarse desde un archivo de configuración.
¿Cuáles son las ventajas de Kubernetes?
Kubernetes agiliza la distribución de software al automatizar las tareas operativas, como la implementación y el ajuste de las aplicaciones, el equilibrio de carga y la autorreparación. Esto significa que las aplicaciones siguen estando altamente disponibles en diversas infraestructuras de nube y, al mismo tiempo, se reduce la carga de trabajo manual de los equipos de operaciones. Entre las principales ventajas, cabe destacar:
Compatibilidad con entornos complejos de gran tamaño: Un entorno de producción en el que se ejecutan varias aplicaciones requerirá que se implementen varios contenedores en muchos hosts y que funcionen en conjunto. Kubernetes ofrece las funciones de organización y gestión que permiten implementar los contenedores según sea necesario para estas cargas de trabajo.
Capacidad de ajuste: Kubernetes se ajusta automáticamente en función de tus necesidades, por lo que obtienes la capacidad que necesitan tus aplicaciones y, al mismo tiempo, ahorras recursos y costos.
Portabilidad: Kubernetes puede ejecutarse en las instalaciones de tu propio centro de datos, en una nube pública y en configuraciones híbridas de instancias públicas y privadas. Cualquiera sea el entorno, pueden utilizarse los mismos comandos.
Implementaciones uniformes: Las implementaciones de Kubernetes son uniformes en toda la infraestructura. Los contenedores representan el concepto de infraestructura inmutable, y todas las dependencias y las indicaciones de configuración que se necesitan para ejecutar una aplicación se incluyen en el contenedor.
Operaciones y desarrollo separados y automatizados: Los contenedores permiten a los desarrolladores ahorrar tiempo, ya que admiten ciclos de repetición rápidos. A su vez, Kubernetes ofrece más seguridad a los equipos de operaciones en cuanto a la estabilidad del sistema.
Respaldo para la estrategia de nube híbrida: Muchas empresas combinan los centros de datos locales con soluciones de nube pública o privada y equilibran las cargas de trabajo entre varios proveedores de nube para aprovechar los cambios en los precios y los distintos niveles de servicio. La uniformidad y la portabilidad de Kubernetes pueden respaldar estas estrategias de entornos de nube híbrida.
Soporte permanente para las aplicaciones tradicionales: Kubernetes te ayuda a distribuir y gestionar las aplicaciones en contenedores, heredadas y desarrolladas en la nube, así como aquellas rediseñadas con una estructura de microservicios.
Gestión de entornos complejos: Los microservicios organizados en contenedores facilitan la coordinación de servicios, como el almacenamiento, la conexión de red y la seguridad, pero también multiplican de manera significativa la cantidad de contenedores en el entorno y, por lo tanto, también su complejidad. Kubernetes agrupa los contenedores en pods para que puedas programar las cargas de trabajo y proporcionar los servicios necesarios, como las conexiones de red y el almacenamiento, para esos contenedores.
Mayor seguridad: Las prácticas de seguridad de Kubernetes permiten que las empresas adopten medidas eficaces para mejorar la seguridad de la TI. Los administradores pueden aplicar políticas de seguridad y control, y dividirlas en pods o grupos de pods. Por su parte, los equipos de desarrollo pueden identificar los problemas de seguridad que surjan en los contenedores durante el tiempo de ejecución y solucionarlos en la fase de diseño, en lugar de actualizarlos o aplicarles parches en la producción. El control de acceso basado en funciones (RBAC) puede asignar permisos específicos a los usuarios y las cuentas de servicios. Los secretos de Kubernetes pueden ayudarte a proteger los datos confidenciales, como las claves de cifrado.
Enfoque de DevOps: Kubernetes ofrece una base de infraestructura uniforme para los contenedores y adopta un enfoque de DevOps, el cual impulsa una relación laboral eficaz entre los equipos de desarrollo y operaciones. El uso del canal de integración y distribución continuas (CI/CD) permite optimizar y acelerar el ciclo de vida del desarrollo de software. Además, la evolución de DevOps, DevSecOps, realiza los controles de seguridad y la gestión de los puntos vulnerables desde las primeras etapas del desarrollo.
¿Qué es un clúster de Kubernetes?
Una implementación de Kubernetes en funcionamiento se denomina clúster y consiste en un grupo de hosts virtuales o físicos que funcionan en conjunto para ejecutar aplicaciones en contenedores.
Los administradores definen el estado deseado de un clúster de Kubernetes y describen 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.
Un clúster de Kubernetes consta de dos partes: un plano de control y una serie de nodos informáticos (por lo general, servidores tradicionales o servidores virtuales).
El plano de control se encarga de mantener el estado deseado del clúster, por ejemplo, de elegir las aplicaciones que se van a ejecutar y las imágenes de contenedores que se van a utilizar.
Por su parte, los nodos siguen las indicaciones del plano de control y se encargan de ejecutar las aplicaciones y las cargas de trabajo. Cada nodo es su propio entorno de Linux®, y puede ser una máquina virtual o física. Un clúster de Kubernetes necesita al menos un nodo informático, pero suele tener varios.
Un nodo de Kubernetes se compone de pods, cada uno de los cuales representa una única instancia de una aplicación. Cada pod incluye un contenedor o una serie de contenedores con conexión directa, y las opciones que controlan su funcionamiento.
Una gran cantidad de servicios de Kubernetes funcionan de manera coordinada para identificar automáticamente el nodo más adecuado para cada tarea, asignar los recursos y encargar a los pods de ese nodo que ejecuten el trabajo solicitado. Kubernetes envía las solicitudes al pod correspondiente de forma automática, sin importar adónde se traslade en el clúster ni si se lo remplaza.
Para mantener todo bajo control, Kubernetes facilita una interfaz de programación de aplicaciones (API) unificada que permite gestionar, crear y configurar el clúster.
Organización de la arquitectura de Kubernetes
La arquitectura de Kubernetes se divide en dos capas principales: el plano de control central y las unidades de ejecución, denominadas nodos de trabajo. El plano de control toma decisiones globales, mientras que un grupo de nodos de trabajo ejecuta los contenedores de aplicaciones.
El plano de control es la pieza más importante, ya que contiene los elementos que controlan el clúster y los datos sobre su estado y configuración. Estos elementos principales de Kubernetes se encargan de garantizar que la cantidad de contenedores en ejecución sea suficiente y que estén disponibles los recursos necesarios. Los nodos de trabajo proporcionan la CPU, la memoria y los entornos de tiempo de ejecución para las cargas de trabajo.
La API de Kubernetes (o kube-apiserver) es el frontend del plano de control de esta plataforma y se encarga de gestionar las solicitudes internas y externas. El servidor de la API determina si una solicitud es válida y, en ese caso, la procesa. Puedes acceder a la API con llamadas de REST, con la interfaz de la línea de comandos kubectl o con otras herramientas de la línea de comandos, como kubeadm.
El programador de Kubernetes (o kube-scheduler) determina los recursos que necesita un pod (como CPU o memoria) junto con el estado del clúster. Luego, programa el pod en un nodo informático adecuado.
Los controladores (o kube-controller-manager) son los que realmente ejecutan el clúster. El administrador de controladores de Kubernetes agrupa en un solo controlador varias funciones de este tipo. Un controlador realiza una consulta al programador y se asegura de que se esté ejecutando la cantidad correcta de pods. Si uno de ellos deja de funcionar, otro controlador lo percibe y responde al problema.
Los datos de configuración y la información sobre el estado del clúster se alojan en la etcd, una base de datos de almacenamiento clave-valor. Este almacén distribuido y con tolerancia a los fallos está diseñado para ser la principal fuente de información del clúster.
Cada nodo posee un motor de tiempo de ejecución de contenedores que posibilita el funcionamiento de estos. Docker es un ejemplo, aunque Kubernetes también admite otros tiempos de ejecución que cumplen con Open Container Initiative, como rkt y CRI-O.
Todos los nodos contienen una kubelet, es decir, una aplicación muy pequeña que se comunica con el plano de control y que garantiza la ejecución de los contenedores en un pod. Cuando el plano de control necesita que algo suceda en un nodo, la kubelet ejecuta la acción.
Los nodos también contienen un kube-proxy, es decir, un proxy de red que facilita los servicios de red de Kubernetes. El kube-proxy administra las comunicaciones de red dentro y fuera del clúster. Para ello, utiliza la capa de filtrado de paquetes del sistema operativo o reenvía el tráfico por cuenta propia.
Además de gestionar los contenedores que ejecutan una aplicación, Kubernetes también puede administrar los datos que esta genera y que están adjuntos a un clúster. La plataforma permite que los usuarios soliciten recursos de almacenamiento sin necesidad de conocer los detalles de la infraestructura fundamental. Los volúmenes permanentes son específicos de un clúster y no de un pod, así que duran más que este último.
Las imágenes de contenedores en las que se basa Kubernetes se almacenan en un registro de contenedores que puede configurar el usuario o un tercero.
¿En qué consisten Knative y Kubernetes sin servidor?
Kubernetes sin servidor es un modelo de desarrollo en la nube que posibilita que los desarrolladores ejecuten aplicaciones organizadas en contenedores sin tener que gestionar clústeres ni pagar por recursos que no se necesitan. Knative es una extensión open source que incorpora estas funciones de la informática sin servidor a Kubernetes.
Una vez que se instalan las aplicaciones sin servidor, estas responden a la demanda y se amplían o reducen automáticamente en función de las necesidades. Por lo general, los proveedores de nube pública ofrecen estas tecnologías a un costo que se mide a través de un modelo de ejecución basado en eventos, según se soliciten. Por eso cuando una función permanece inactiva, no se genera ningún cargo.
Kubernetes es una opción popular para la ejecución de los entornos sin servidor. Sin embargo, la plataforma por sí sola no está preparada para ejecutar las aplicaciones sin servidor de forma nativa. Knative incorpora ciertos elementos para implementar, ejecutar y gestionar las aplicaciones sin servidor en Kubernetes.
Con este proyecto, puedes crear un servicio al empaquetar el código como imagen de contenedor y pasarlo al sistema. Este se ejecuta solo cuando es necesario, y Knative inicia y detiene las instancias automáticamente.
¿Qué es un operador de Kubernetes?
Un operador de Kubernetes es un controlador específico de la aplicación que amplía las funciones de la API de Kubernetes. Crea, configura y gestiona instancias de aplicaciones complejas en nombre de un usuario de Kubernetes y agrega otras funciones para ellas. Se basa en los conceptos básicos de los recursos y los controladores de Kubernetes, pero incluye el conocimiento específico sobre el dominio o la aplicación para automatizar todo el ciclo de vida del software que gestiona.
Con este operador, se puede realizar prácticamente cualquier acción relacionada con Kubernetes: ajustar la capacidad de una aplicación compleja, actualizar la versión o incluso gestionar los módulos del kernel para los nodos de un clúster informático con hardware especializado. Algunos ejemplos de software y herramientas que se implementan como operadores de Kubernetes son Prometheus Operator para la supervisión y Elastic Kubernetes Operator para la automatización de la búsqueda.
¿Cuál es la diferencia entre Red Hat OpenShift y Kubernetes?
La principal diferencia entre Kubernetes y Red Hat OpenShift es que el primero es un motor open source de organización de contenedores, mientras que la segunda es una plataforma de aplicaciones empresarial completa que se diseñó con Kubernetes como base.
Kubernetes se utiliza para implementar, gestionar y ajustar los contenedores. La mayoría de las empresas desean integrar funciones como la automatización, la supervisión, el análisis de los registros, la malla de servicios, la informática sin servidor y las herramientas de productividad para los desarrolladores. Asimismo, es posible que los usuarios prefieran agregar otras herramientas para facilitar la conexión en red, la entrada de datos, el equilibrio de carga, el almacenamiento, la supervisión, el registro, la gestión de varios clústeres, la integración y la distribución continuas (CI/CD). En pocas palabras, para la mayoría de los casos prácticos, no basta con usar solo Kubernetes.
Muchos proveedores de software ofrecen sus propias versiones de Kubernetes que incluyen diversas ofertas de plataforma como servicio (PaaS), instaladores, servicios alojados y distribuciones autogestionadas. Cloud Native Computing Foundation (CNCF) tiene una lista de decenas de ofertas certificadas de Kubernetes.
Además de ser una oferta de Kubernetes con certificación de CNCF, Red Hat® OpenShift® presenta muchas otras ventajas. Utiliza Kubernetes como base de una plataforma integral para proporcionar aplicaciones desarrolladas en la nube de manera uniforme en entornos de nube híbrida.
Con Kubernetes como motor de organización de los contenedores, Red Hat OpenShift también incorpora muchas otras funciones del ecosistema open source de CNCF, y Red Hat se encarga de probarlas, empaquetarlas y brindarles soporte. La plataforma puede adquirirse como un servicio de la nube pública de los proveedores de nube más importantes, como AWS, Microsoft Azure, Google e IBM, o como un sistema de software autogestionado en una gran variedad de infraestructuras virtuales y de servidores dedicados (bare metal) en los centros de datos, las nubes públicas y el extremo de la red.
¿Qué es OKD?
OKD es la distribución de la comunidad open source de Kubernetes que funciona como el proyecto base upstream de Red Hat OpenShift. Combina Kubernetes con herramientas para el desarrollo y las operaciones que permiten que los equipos agilicen el diseño de las aplicaciones, las implementen y ajusten con eficiencia y mantengan un ciclo de vida prolongado. Permite que los desarrolladores creen, prueben e implementen aplicaciones en la nube y utilicen varios lenguajes de programación, como Go, Node.js, Ruby, Python, PHP, Perl y Java.
Es el proyecto upstream de Red Hat OpenShift y está optimizado para desarrollar e implementar aplicaciones de forma constante. Las funciones nuevas y las actualizaciones de la comunidad suelen lanzarse en OKD, donde se prueba su uso empresarial, antes que en OpenShift.
La principal diferencia entre OKD y Red Hat OpenShift es que este último está validado y probado por Red Hat, y ofrece ventajas en la suscripción para satisfacer los requisitos de las operaciones empresariales. Una suscripción a esta plataforma incluye soporte técnico, acceso a los equipos de respuesta de seguridad, opciones de soporte a largo plazo, operadores externos validados, bases de datos y middleware certificados, y mucho más.
Motivos para elegir Red Hat como plataforma de aplicaciones
Red Hat ofrece una plataforma de aplicaciones empresariales basada en Kubernetes que incluye la ejecución de parches de seguridad, el soporte durante todo el ciclo de vida y las herramientas integradas para los desarrolladores.
Gracias a Red Hat OpenShift, los desarrolladores pueden crear nuevas aplicaciones 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 buscas implementar tus cargas de trabajo de Kubernetes en un servicio de nube gestionado o trasladarlas a él, OpenShift también se ofrece como un servicio en la nube en Amazon Web Services (AWS), Microsoft Azure, Google Cloud, IBM Cloud y otros proveedores. Además, ya sea que elijas un entorno gestionado o uno autogestionado, Red Hat ofrece planes claros para actualizar OpenShift y mantener los clústeres al día y con soporte.
Con OpenShift como base, puedes utilizar Red Hat Advanced Cluster Management y Red Hat Ansible® Automation Platform en conjunto para implementar y gestionar de manera eficiente varios clústeres Kubernetes en distintas regiones, como entornos de nube pública, en las instalaciones y en el extremo de la red.
Red Hat obtiene la categoría de Líder en el informe "Gartner® Magic Quadrant™ for Container Management" de 2025
Lee el informe Gartner® Magic Quadrant™ de 2025 sobre la gestión de contenedores y descubre los motivos por los que Red Hat OpenShift obtuvo el reconocimiento de Líder por tercer año consecutivo.