Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Cargas de trabajo y Pods de Kubernetes

Puedes construir cualquier aplicación compleja en contenedores en Kubernetes utilizando dos constructos básicos: pods y cargas de trabajo. Una vez que construyes una aplicación, puedes exponerla para su acceso ya sea dentro del mismo clúster o en Internet utilizando un tercer constructo: servicios.

Pods

Pods son uno o más contenedores que comparten espacios de nombres de red y volúmenes de almacenamiento. La mayoría de los pods tienen solo un contenedor. Por lo tanto, cuando hablamos de pods, el término a menudo es sinónimo de contenedores. Escalas los pods de la misma manera que escalas los contenedores-- teniendo múltiples instancias del mismo pod que implementa un servicio. Normalmente, los pods se escalan y gestionan mediante la carga de trabajo.

Cargas de trabajo

Cargas de trabajo son objetos que establecen reglas de despliegue para los pods. Basándose en estas reglas, Kubernetes realiza el despliegue y actualiza la carga de trabajo con el estado actual de la aplicación. Las cargas de trabajo te permiten definir las reglas para la programación, escalado y actualización de aplicaciones.

Tipos de cargas de trabajo

Kubernetes divide las cargas de trabajo en diferentes tipos. Los tipos más populares soportados por Kubernetes son:

  • Despliegues

    Los despliegues son mejor utilizados para aplicaciones sin estado (es decir, cuando no tienes que mantener el estado de la carga de trabajo). Los pods gestionados por cargas de trabajo de despliegue se tratan como independientes y desechables. Si un pod encuentra una interrupción, Kubernetes lo elimina y luego lo recrea. Una aplicación de ejemplo sería un servidor web Nginx.

  • StatefulSets

    Los StatefulSets, en contraste con los despliegues, son mejor utilizados cuando tu aplicación necesita mantener su identidad y almacenar datos. Una aplicación sería algo como Zookeeper—​una aplicación que requiere una base de datos para almacenamiento.

  • DaemonSets

    Los DaemonSets aseguran que cada nodo en el clúster ejecute una copia del pod. Para casos de uso donde estás recopilando registros o monitoreando el rendimiento de los nodos, esta carga de trabajo tipo daemon funciona mejor.

  • Jobs

    Los Jobs lanzan uno o más pods y aseguran que un número especificado de ellos terminen con éxito. Los Jobs son mejor utilizados para ejecutar una tarea finita hasta su finalización en lugar de gestionar un estado de aplicación deseado en curso.

  • CronJobs

    CronJobs son similares a los Jobs. Los CronJobs, sin embargo, se ejecutan hasta su finalización en un horario basado en cron.

Servicios

En muchos casos de uso, una carga de trabajo tiene que ser ya sea:

  • Accedida por otras cargas de trabajo en el clúster.

  • Expuesta al mundo exterior.

Puedes lograr estos objetivos creando un Servicio. Los servicios se asignan a los pods de la carga de trabajo subyacente utilizando un enfoque de selector/etiqueta (ver los ejemplos de código). La interfaz de usuario de Rancher simplifica este proceso de asignación creando automáticamente un servicio junto con la carga de trabajo, utilizando el puerto y tipo de servicio que selecciones.

Tipos de servicio

Hay varios tipos de servicios disponibles en Rancher. Las descripciones a continuación provienen de la Documentación de Kubernetes.

  • ClusterIP

    Expone el servicio en una IP interna del clúster. Elegir este valor hace que el servicio solo sea accesible desde dentro del clúster. Este es el valor por defecto ServiceType.

  • NodePort

    Expone el servicio en la IP de cada nodo en un puerto estático (el NodePort). Un servicio ClusterIP, al que el servicio NodePort redirigirá, se crea automáticamente. Podrás contactar con el servicio NodePort, desde fuera del clúster, solicitando <NodeIP>:<NodePort>.

  • LoadBalancer

    Expone el servicio externamente utilizando el balanceador de carga de un proveedor de nube. Se crean automáticamente los servicios NodePort y ClusterIP, a los que el balanceador de carga externo redirigirá.

Opciones de carga de trabajo

Esta sección de la documentación contiene instrucciones para desplegar cargas de trabajo y utilizar opciones de carga de trabajo.