1. Temas
  2. Contenedores
  3. Introducción a la arquitectura de Kubernetes

Introducción a la arquitectura de Kubernetes

CopiedCopy failedCopiar URL
  • La arquitectura de Kubernetes se basa en un modelo de plano de control o nodo de trabajo.
  • Los clústeres de Kubernetes deben ofrecer seguridad, facilidad de uso y capacidad de expansión.
  • Un clúster consta de dos partes: el plano de control, que toma las decisiones globales, y los nodos, que ejecutan las aplicaciones.
  • Al principio, Kubernetes no incluye un método para que los pods de diferentes nodos se comuniquen entre sí, una forma de enrutar el tráfico de Internet hacia el interior ni un modo de ver los registros fácilmente.
  • Kubernetes ofrece las herramientas para organizar una aplicación en contenedores grande y compleja, pero también te permite tomar muchas decisiones.

¿Qué es la arquitectura de Kubernetes?

La arquitectura de Kubernetes se basa en un modelo de plano de control o nodo de trabajo. Divide un clúster en dos capas principales: el plano de control, que toma decisiones globales y gestiona el clúster, y los nodos de trabajo, que ejecutan físicamente las aplicaciones dentro de los contenedores.

Si solo conoces los conceptos básicos de Kubernetes, sabrás que se trata de una plataforma open source de organización de contenedores diseñada para ejecutar aplicaciones y servicios distribuidos a gran escala. Sin embargo, es posible que no comprendas sus elementos y su forma de interacción.

Analicemos brevemente los principios de diseño en los que se basa Kubernetes y el funcionamiento conjunto de sus distintos elementos.

El diseño de un clúster de Kubernetes se basa en tres principios, como se explica en los detalles sobre la implementación de Kubernetes.

Un clúster de Kubernetes debe ofrecer:

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

Red Hat Advanced Cluster Management for Kubernetes

Una implementación de Kubernetes que está en funcionamiento se denomina clúster. Puedes visualizar un clúster de Kubernetes como dos partes: el plano de control y las máquinas informáticas o nodos. Cada nodo es su propio entorno de Linux®, y puede ser una máquina virtual o física. Cada uno ejecuta pods, que están compuestos por contenedores.

En este diagrama, se muestra la relación entre las partes de un clúster de Kubernetes:

A diagram showing how the parts of a Kubernetes cluster relate to one another

El plano de control de Kubernetes es el "cerebro" del clúster. Toma decisiones globales (como programar aplicaciones), detecta eventos del clúster y responde a ellos, y se asegura de que el estado real del clúster coincida con el estado deseado que se declaró.

En el plano de control de Kubernetes se encuentran los elementos que controlan el clúster, junto con los datos sobre su estado y configuración. Estos elementos principales de Kubernetes garantizan que la cantidad de contenedores en ejecución sea suficiente y que estén disponibles los recursos necesarios. 

El plano de control está en contacto permanente con las máquinas informáticas. Cuando configuras el clúster para que se ejecute de cierta manera, el plano de control se asegura de que eso se cumpla.

kube-apiserver

La API de Kubernetes constituye el frontend del plano de control de Kubernetes 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.

kube-scheduler

El programador considera las necesidades en materia de recursos de un pod, como la CPU o la memoria, junto con el estado del clúster. Luego, programa el pod en un nodo informático adecuado.

kube-controller-manager

Los controladores ejecutan el clúster, y el administrador de controladores de Kubernetes contiene varias funciones de controlador en una sola. Un controlador realiza una consulta al programador y se asegura de que se esté ejecutando la cantidad correcta de pods. Si un pod deja de funcionar, otro controlador lo percibe y responde al problema. Los controladores conectan los servicios a los pods para que las solicitudes lleguen a los endpoints correctos. También hay controladores que crean cuentas y tokens de acceso a la API.

etcd

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 almacén de 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.

Mientras que el plano de control funciona como el cerebro, los nodos de trabajo de Kubernetes son la fuerza, es decir, se encargan del trabajo pesado que implica la ejecución de las aplicaciones.

Los nodos de Kubernetes pueden ser máquinas físicas o máquinas virtuales. Dentro de ellos sucede un ciclo permanente de recepción de instrucciones del plano de control, ejecución de contenedores, gestión de redes e informes sobre el estado.

Un clúster de Kubernetes necesita al menos un nodo informático, pero suele tener varios. Los pods se programan y organizan para ejecutarse en los nodos. ¿Necesitas ampliar la capacidad de tu clúster? Agrega más nodos.

Pods

Un pod es la unidad más pequeña y sencilla del modelo de objetos de Kubernetes. Representa una única instancia de una aplicación. Cada pod incluye un contenedor o una serie de contenedores con conexión directa, así como las opciones que controlan su funcionamiento. Además, se puede conectar al almacenamiento permanente para ejecutar aplicaciones con estado.

Motor de tiempo de ejecución de contenedores

Para ejecutar los contenedores, cada nodo informático tiene un motor de tiempo de ejecución de contenedores. 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.

kubelet

Cada nodo informático contiene una kubelet, es decir, una aplicación diminuta que se comunica con el plano de control y se asegura de que los contenedores se ejecuten en un pod. Cuando el plano de control necesita que algo suceda en un nodo, la kubelet ejecuta la acción.

kube-proxy

Cada nodo informático también contiene kube-proxy, 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.

Una vez que tienes el plano de control y los nodos de trabajo, se puede decir que ya dispones de un clúster de Kubernetes. Sin embargo, está completamente vacío. Al principio, Kubernetes no incluye un método para que los pods de diferentes nodos se comuniquen entre sí, una forma de enrutar el tráfico de Internet hacia el interior ni una forma de ver los registros fácilmente.

Para que un clúster esté listo para la producción, debes instalar complementos e infraestructura de respaldo.

  1. Redes: Kubernetes requiere una superposición de redes virtuales para que los pods puedan comunicarse sin problemas entre los diferentes nodos. Para crear esta capa de red y asignar direcciones IP únicas a cada pod, se debe instalar un plugin de interfaz de red de contenedores (CNI), como Cilium o Calico.
  2. Controlador Ingress: El tráfico interno se gestiona de forma automática, pero debes tener una puerta de enlace para permitir el ingreso del tráfico externo. Un controlador Ingress, como NGINX o Traefik, actúa como un proxy inverso y un equilibrador de carga que dirige de forma segura el tráfico de Internet externo a los servicios correctos dentro del clúster.
  3. DNS del clúster: Como los pods cambian constantemente las direcciones IP cuando se reinician, no se pueden codificar las rutas de red. Un proveedor de DNS del clúster (por lo general, CoreDNS) asigna automáticamente los nombres de dominio permanentes a tus servicios, lo que garantiza que tus aplicaciones siempre puedan ubicarse entre sí.
  4. Aprovisionador de almacenamiento: Los contenedores no tienen estado, lo que significa que cualquier dato que contengan se borrará si sufren una falla. Una interfaz de almacenamiento de contenedores (CSI) vincula el clúster con el almacenamiento físico externo (como los discos en la nube o el NFS), de manera que los discos duros permanentes se aprovisionan y vinculan automáticamente para que los datos sigan almacenados después de cada reinicio.
  5. Stack de observabilidad: Cuando las aplicaciones se encuentran dispersas en varias máquinas, la resolución de problemas requiere que la información esté en un solo lugar. Las herramientas como Prometheus y Grafana supervisan las métricas del clúster, junto con los agentes de registro, como FluentBit, para agrupar los registros de los contenedores en un único panel que permita realizar búsquedas.

Este resumen general de la arquitectura de Kubernetes es solo una parte. Cuando analizas la forma en que estos elementos se comunican entre sí, y con la infraestructura y los recursos externos, comprendes los desafíos que implica configurar y proteger un clúster de Kubernetes.

Kubernetes ofrece las herramientas para organizar una aplicación en contenedores grande y compleja, pero también te permite tomar muchas decisiones. Tú eliges el sistema operativo, el tiempo de ejecución del contenedor, las herramientas de integración y distribución continuas (CI/CD), los servicios de aplicaciones, el almacenamiento y la mayoría de los demás elementos. También se incluye la gestión de las funciones, el control de acceso, la arquitectura multiempresa y la configuración predeterminada segura. Además, puedes optar por ejecutar Kubernetes por tu cuenta o trabajar con un proveedor que pueda proporcionar una versión compatible.

Esta libertad de elección es parte de la flexibilidad propia de Kubernetes. Si bien la implementación de Kubernetes puede ser compleja, te permite ejecutar las aplicaciones en contenedores con tus propios términos y reaccionar rápidamente ante los cambios en tu empresa.

Diseña aplicaciones en la nube con Kubernetes

En esta serie de webinars, conocerás la opinión de los especialistas y podrás establecer la plataforma de datos en Kubernetes que necesitas para diseñar, ejecutar, implementar y modernizar las aplicaciones. 

Mira la serie web por solicitud

Red Hat es una empresa líder y desarrolladora activa de la tecnología de contenedores open source, lo cual incluye Kubernetes. Además, diseña herramientas fundamentales para proteger, simplificar y actualizar la infraestructura de contenedores de forma automática. 

Red Hat® OpenShift® es una distribución de Kubernetes empresarial. Con Red Hat OpenShift, los equipos obtienen una plataforma única e integrada para DevOps. Red Hat OpenShift ofrece a los desarrolladores la opción de lenguajes, marcos, middleware y bases de datos, además de la automatización del diseño y la implementación a través de la CI/CD para aumentar la productividad. También incluye Red Hat OpenShift Data Foundation, una plataforma de servicios de datos y almacenamiento que está diseñada para los contenedores.

Más información

Recurso

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.

Todas las versiones de prueba de los productos de Red Hat

Con las versiones de prueba gratuitas de nuestros productos, podrás adquirir experiencia práctica, prepararte para obtener una certificación o evaluar las soluciones para saber si son adecuadas para tu empresa.

Más información

¿Qué es la organización de contenedores?

Se trata de un sistema que permite automatizar los procesos para implementar contenedores, gestionarlos, ajustarlos y conectarlos en red.

¿Qué es un operador de Kubernetes?

Los operadores de Kubernetes consisten en un método para empaquetar, implementar y gestionar una aplicación mediante la ampliación de las funciones de la API (interfaz de programación de aplicaciones) de Kubernetes.

¿Qué es Kubernetes?

Kubernetes es una plataforma para la organización de contenedores que elimina muchos de los procesos manuales involucrados en la implementación y el ajuste de las aplicaciones que se alojan en ellos.

Contenedores: lecturas recomendadas

Artículos relacionados