Jump to section

Introducción a la arquitectura de Kubernetes

Copiar URL

Basta con conocer los conceptos básicos de Kubernetes para saber que es una plataforma open source de organización de los contenedores diseñada para ejecutar aplicaciones y servicios distribuidos según sea necesario. Pero probablemente no sepa qué elementos la conforman ni cómo interactúan entre ellos.

Revisemos rápidamente los principios de diseño de Kubernetes, y analicemos cómo funcionan sus diferentes elementos.

Tal como se explica en los detalles de implementación de Kubernetes, el diseño de un clúster con esta tecnología se basa en tres principios.

Un clúster de Kubernetes debe tener 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.

Una implementación de Kubernetes en funcionamiento se denomina clúster. Lo puede visualizar en 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. Además, los nodos ejecutan los pods, los cuales están formados por contenedores.

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

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

Plano de control

Comencemos por la pieza central del clúster de Kubernetes: el plano de control. En él se encuentran los elementos de Kubernetes que controlan el clúster, junto con los datos sobre su estado y configuración. Los elementos principales de Kubernetes tienen la importante tarea de garantizar que los contenedores se ejecuten en cantidades suficientes y con los recursos necesarios. 

El plano de control está en contacto permanente con las máquinas informáticas y garantiza que el clúster se ejecute según la configuración que usted haya establecido.

kube-apiserver

¿Necesita interactuar con su clúster de Kubernetes? Utilice la API de Kubernetes, que 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. Puede 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

¿Su clúster está en buen estado? Si se necesitaran clústeres nuevos, ¿dónde sería más adecuado colocarlos? De esto se encarga el programador de Kubernetes.

Para ello, debe tener en cuenta 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.

kube-controller-manager

Los controladores son los que realmente ejecutan el clúster. El controlador y administrador de Kubernetes contiene varias funciones de este tipo en una. El controlador realiza una consulta al programador y se asegura de que se esté ejecutando la cantidad correcta de pods. Si uno de ellos se cae, otro controlador lo percibe y responde al problema. Un controlador conecta los servicios a los pods, de manera que las solicitudes van a los extremos correctos. Además, hay algunos que permiten crear cuentas y tokens de acceso a las 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 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.

Nodos

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 ellos. Cuando necesite ampliar la capacidad de su clúster, incorpore más nodos.

Pods

El pod es la unidad más pequeña y sencilla del modelo de objetos de Kubernetes. Representa una instancia única de una aplicación. Cada pod contiene un contenedor o una serie de contenedores con conexión directa, y las opciones que controlan su funcionamiento. Los pods pueden conectarse a un almacenamiento permanente para ejecutar aplicaciones con estado.

Motor de tiempo de ejecución de contenedores

Cada nodo informático 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 la Open Container Initiative, como rkt y CRI-O.

kubelet

Todos los nodos informáticos 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.

kube-proxy

Los nodos informáticos 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.

Almacenamiento permanente

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 subyacente. Los volúmenes permanentes son específicos de un clúster y no de un pod, así que duran más que este último.

Registro de contenedores

Las imágenes de contenedores en las que se basa Kubernetes se almacenan en un registro de contenedores que puede configurar usted o pertenecerle a un tercero.

Infraestructura subyacente

Usted decide si quiere ejecutar Kubernetes en servidores sin sistema operativo, 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.

Esta descripción simplificada de la arquitectura de Kubernetes solo da un panorama general. Para entender los desafíos que supone configurar y proteger un clúster de Kubernetes, hay que considerar cómo se comunican los elementos mencionados entre ellos, y con los recursos y la infraestructura externos.

Este sistema ofrece las herramientas para organizar una aplicación en contenedores de gran tamaño y complejidad, pero usted también debe tomar varias decisiones. Por ejemplo, debe elegir el sistema operativo, el tiempo de ejecución del contenedor, las herramientas de integración/distribución continuas (CI/CD), los servicios de aplicaciones, el almacenamiento y la mayoría de los demás elementos. También tiene que gestionar las funciones, el control de acceso, la arquitectura multiempresa y los ajustes seguros predeterminados. Además, puede optar por ejecutar Kubernetes por su cuenta o trabajar con un proveedor que le brinde una versión compatible.

Esta libertad de elección forma parte de la naturaleza flexible de Kubernetes. Si bien puede ser difícil implementar Kubernetes, la plataforma le ofrece la posibilidad de ejecutar aplicaciones en contenedores según sus propios términos y responder con agilidad a los cambios en la empresa.

Desarrolle aplicaciones en la nube con Kubernetes

Vea esta serie de webinars para conocer la opinión de los especialistas y, así, establecer la plataforma de datos en Kubernetes empresarial que necesita para diseñar, ejecutar, implementar y modernizar las aplicaciones. 

Red Hat es líder y desarrollador activo de la tecnología de contenedores de open source, lo cual incluye a 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 empresarial de Kubernetes. Con este producto, los equipos obtienen una plataforma única e integrada para DevOps. Red Hat OpenShift ofrece a los desarrolladores la posibilidad de elegir los lenguajes, los marcos de trabajo, el middleware y las bases de datos, junto con el diseño y la implementación de la automatización a través de la CI/CD para aumentar la productividad. También está disponible una plataforma de servicios de datos y almacenamiento diseñada para los contenedores: Red Hat OpenShift Data Foundation.

Artículos relacionados

ARTÍCULO

Diferencias entre los contenedores y las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema.

ARTÍCULO

¿Qué es la organización de los contenedores?

La organización en contenedores automatiza la implementación, la gestión, la escalabilidad y la conexión en red de los contenedores.

ARTÍCULO

¿Qué es un contenedor de Linux?

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen.

Más información sobre los contenedores

Productos

Plataforma de aplicaciones empresariales que ofrece servicios probados para lanzar aplicaciones al mercado en la infraestructura que usted escoja.

Contenido adicional

Capacitación

Curso de capacitación gratuito

Running Containers with Red Hat Technical Overview

Curso de capacitación gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Curso de capacitación gratuito

Developing Cloud-Native Applications with Microservices Architectures