Iniciar sesión / Registrar Cuenta

Contenedores

Introducción a la arquitectura de Kubernetes

Jump to section

Basta con conocer las nociones básicas de Kubernetes para saber que es una plataforma open source de organización en contenedores diseñada para ejecutar aplicaciones y servicios distribuidos a escala. 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.

Principios de diseño de Kubernetes

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.

¿Cuáles son los elementos de un clúster de Kubernetes?

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 de trabajo. Cada nodo es su propio entorno Linux®, que 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 cómo se relacionan entre sí los elementos de un clúster de Kubernetes:

¿Qué ocurre en el plano de control de Kubernetes?

Plano de control

Comencemos por la pieza central del clúster de Kubernetes: el plano de control. Aquí 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. Garantiza que el clúster se ejecute según la configuración que haya elegido.

kube-apiserver

¿Necesita interactuar con su clúster de Kubernetes? Utilice la API de Kubernetes, es decir, el frontend del plano de control de este sistema que se encarga de gestionar las solicitudes internas y externas. El servidor de 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 de valor clave. Esta base de datos distribuida y con tolerancia a los fallos está diseñada para ser la principal fuente de información del clúster.

¿Qué ocurre en un nodo de Kubernetes?

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. ¿Necesita 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 su funcionamiento. 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 un kubelet, es decir, una aplicación muy pequeña que se comunica con el plano de control. El kubelet garantiza que sus 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

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, confía en la capa de filtrado de paquetes de su sistema operativo o reenvía el tráfico por cuenta propia.

¿Qué más necesita un clúster de Kubernetes?

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. Esta tecnología 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, el cual puede configurarlo 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.

Ahora, nadie dijo que es fácil

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 de implementar, Kubernetes 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. 

¿Por qué elegir Red Hat OpenShift para Kubernetes?

Red Hat es líder y desarrollador activo de la tecnología de contenedores open source, incluido 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 Container Storage.