Jump to section

Introducción a los patrones de Kubernetes

Copiar URL

Un patrón es la solución replicable a cierto problema. Los de Kubernetes son patrones de diseño para las aplicaciones y los servicios basados en contenedores.  

Kubernetes ayuda a los desarrolladores a escribir aplicaciones nativas de la nube y ofrece una biblioteca de interfaces de programación de aplicaciones (API) y herramientas para diseñarlas. 

Sin embargo, Kubernetes no proporciona a los desarrolladores ni a los arquitectos pautas sobre cómo usar estos elementos para diseñar un sistema íntegro que esté a la altura de las necesidades y los objetivos empresariales. 

Los patrones implican una forma de volver a utilizar las arquitecturas. En lugar de volver a crear toda la infraestructura completa, puede usar los patrones de Kubernetes actuales, lo cual además garantiza que todo funcione como es debido. 

Si busca prestar servicios empresariales importantes con Kubernetes como la plataforma de tiempo de ejecución, el aprendizaje mediante el método de prueba y error puede llevarle demasiado tiempo y ocasionar problemas como el downtime y las interrupciones. 

Un patrón es como un plano técnico, ya que muestra la forma de solucionar todo un conjunto de problemas similares. No es solo una serie de instrucciones paso a paso para corregir un problema en particular.

Además, su uso puede ocasionar resultados un tanto diferentes, ya que la idea no es que ofrezcan soluciones idénticas. Si bien su sistema puede ser diferente al de otra persona que haya usado el mismo patrón, ambos tendrán características en común. 

Mediante el uso de patrones de Kubernetes, los desarrolladores pueden crear aplicaciones nativas de la nube con Kubernetes como la plataforma de tiempo de ejecución.

Los desarrolladores de Kubernetes necesitan los patrones, que son las herramientas que muestran cómo diseñar un sistema.

  • Los patrones básicos abarcan los conceptos principales de Kubernetes. Son los principios y las prácticas subyacentes para el diseño de aplicaciones en la nube basadas en contenedores. 
  • Los patrones de comportamiento son aquellos que abarcan a los patrones básicos y aportan un mayor nivel de detalle a los conceptos para la gestión de distintos tipos de interacciones entre los contenedores y la plataforma. 
  • Los patrones estructurales se relacionan con la organización de los contenedores dentro de un pod de Kubernetes. 
  • Los patrones de configuración sirven para las distintas formas en que se puede manipular la configuración de las aplicaciones en Kubernetes. Estos patrones incluyen los pasos específicos que se necesitan para conectar las aplicaciones a su configuración. 
  • Los patrones avanzados incluyen conceptos superiores; por ejemplo, cómo ampliar la plataforma en sí o cómo diseñar imágenes de contenedores directamente dentro del clúster.

Patrones de demandas predecibles

Los patrones de demandas predecibles son patrones de Kubernetes básicos, los cuales garantizan que sus aplicaciones cumplan con los principios fundamentales de las aplicaciones en contenedores, de manera que puedan automatizarse con Kubernetes. 

Los patrones de demandas predecibles explican por qué los contenedores necesitan declarar las dependencias de tiempo de ejecución y los requisitos de recursos de las aplicaciones. Al definir estos recursos, Kubernetes puede elegir el sitio apropiado para implementar las aplicaciones dentro de su clúster

Algunos ejemplos de lo que se puede definir con el uso de estos patrones son las dependencias de tiempo de ejecución, los perfiles de recursos, la prioridad de los pod y los recursos de los proyectos.

Por ejemplo, los perfiles de recursos

Deberá especificar los requisitos de recursos de un contenedor (como la CPU y la memoria) en forma de solicitud y límite. La solicitud se refiere a la cantidad mínima de recursos necesarios, y el límite se refiere a la cantidad máxima de recursos que puede consumir un contenedor. 

El programador utiliza la cantidad de las solicitudes para colocar los pods en los nodos, y solo programará un pod en un nodo que tenga la capacidad suficiente para albergarlo.  

Si no se establecen los requisitos de los recursos, el contenedor se considerará como de menor prioridad, y se eliminará primero si el nodo agota los recursos disponibles.

Patrones de configuración

Todas las aplicaciones requieren configuraciones, y aunque almacenarlas en el código fuente sea una opción sencilla, no le brinda la flexibilidad necesaria para adaptar la configuración sin tener que volver a crear la imagen de la aplicación. La configuración externa le permite adaptar las aplicaciones en función del entorno.

Los patrones de configuración lo ayudarán a personalizar y adaptar sus aplicaciones mediante configuraciones externas para diferentes entornos de desarrollo, integración y producción. 

Por ejemplo, la configuración EnVar

El patrón de configuración EnVar funciona mejor con pequeños conjuntos de variables de configuración, donde las variables de entorno de uso universal se pueden utilizar para externalizar la configuración de una aplicación. 

Esto le permite modificar la configuración incluso después de haber diseñado la aplicación, a diferencia de la configuración codificada, la cual requeriría volver a diseñarla.

El uso de variables de entorno para externalizar la configuración funciona correctamente porque cualquier sistema operativo puede definir estas variables y cualquier lenguaje de programación puede acceder a ellas. 

Con las variables del entorno, los valores codificados predeterminados se definen generalmente durante el diseño, y se sobrescriben durante la ejecución.

En Kubernetes, las variables se pueden configurar directamente en la especificación del pod de un controlador como Deployment o ReplicaSet. Usted puede adjuntar valores directamente en las variables del entorno, que se pueden gestionar por separado de la definición del pod.

También puede delegar las configuraciones a Kubernetes Secrets (para la información confidencial) y a ConfigMaps (para las configuraciones no confidenciales).

Patrones avanzados

Estos patrones incluyen temas complejos y las implementaciones de patrones más recientes. Algunos ejemplos de patrones avanzados de Kubernetes son los patrones de controlador, operador, escalabilidad elástica y diseñador de imagen.

Por ejemplo: escalabilidad elástica 

El patrón de escalabilidad elástica se usa para expandir una aplicación de forma horizontal, adaptando la cantidad de réplicas de pod; de forma vertical, adaptando los requisitos de recursos para los pods; y también puede ampliar el clúster en sí, cambiando la cantidad de nodos que hay en él.

Aunque la escalabilidad se puede ajustar de forma manual, este patrón permite que Kubernetes se adapte automáticamente según las cargas. 

Con Kubernetes, se pueden cambiar los recursos de los contenedores, las réplicas necesarias para un servicio o la cantidad de nodos que hay en el clúster. También se pueden controlar las cargas externas y los eventos relacionados con la capacidad, analizar el estado del contenedor y adaptar su capacidad para obtener el rendimiento deseado. 

La función de escalamiento horizontal automático del pod le permite definir la capacidad de una aplicación que no es fija, pero que posee suficiente capacidad como para manejar una carga variable. Para realizar la ampliación de los pods se utiliza una herramienta conocida como autoescalador horizontal de pods. 

Para poder utilizar esta herramienta, es necesario habilitar el servidor de métricas, un agregador de datos sobre el uso de recursos en todo el clúster, y definir el límite de recursos de la CPU. Puede crear una definición para el autoescalador horizontal de pods desde la línea de comandos. 

El controlador de la herramienta recupera permanentemente las métricas sobre los pods relacionados con este ajuste, en función de la definición determinada con anterioridad desde la línea de comandos. 

Asimismo, calcula la cantidad necesaria de réplicas según el valor actual y el valor deseado, y cambia las réplicas declaradas para conservar el nuevo estado deseado.

Red Hat® OpenShift® es una plataforma Kubernetes para la empresa. Ofrece a los desarrolladores entornos de autoservicio para poder diseñar sus aplicaciones, y brinda operaciones automatizadas integrales en cualquier infraestructura.

Red Hat OpenShift incluye todos los elementos adicionales de tecnología que convierten a Kubernetes en una herramienta sólida y viable para la empresa; por ejemplo: registros, conexiones en red, telemetría, seguridad, automatización y servicios.

Gracias a Red Hat OpenShift, los desarrolladores pueden crear nuevas aplicaciones en contenedores, alojarlas e implementarlas en la nube con la escalabilidad, el control y la organización necesarios para convertir una idea brillante en un nuevo negocio, en poco tiempo y sin complicaciones.

Artículos recomendados

ARTÍCULO

Sistemas con estado y sin estado

El que un sistema tenga estado depende del tiempo durante el cual se registra interacción con él y de la forma en que se debe almacenar esa información.

ARTÍCULO

¿Qué es Quarkus?

Quarkus es una pila de Java propia de Kubernetes que se creó para las compilaciones originales y las máquinas virtuales Java (JVM), la cual permite optimizar esta plataforma especialmente para los contenedores.

ARTÍCULO

¿Qué es la informática sin servidor?

Se trata de un modelo de desarrollo directamente en la nube que posibilita el diseño y la ejecución de aplicaciones sin que sea necesario gestionar servidores.

Más información sobre las aplicaciones desarrolladas en la nube

Productos

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

Contenido adicional

Capacitación

Capacitación gratuita

Developing Cloud-Native Applications with Microservices Architectures