Descripción general de la implementación de cargas de trabajo

Para implementar y administrar tus aplicaciones en contenedores y otras cargas de trabajo en tu clúster de Google Kubernetes Engine, usa el sistema Kubernetes a fin de crear objetos de controlador de Kubernetes. Estos objetos de controlador representan las aplicaciones, daemons y trabajos por lotes que se ejecutan en tus clústeres.

Puedes crear estos objetos de controlador con la API de Kubernetes o con kubectl, una interfaz de línea de comandos para Kubernetes que instala gcloud. Por lo general, se compila una representación del objeto de control de Kubernetes que quieres, como un archivo de configuración YAML y, luego, usas ese archivo con la API de Kubernetes o la interfaz de línea de comandos kubectl.

Tipos de cargas de trabajo

Kubernetes proporciona diferentes tipos de objetos de controlador que corresponden a distintos tipos de cargas de trabajo que puedes ejecutar. Ciertos objetos de controlador son más adecuados para representar tipos específicos de cargas de trabajo. En las secciones siguientes, se describen algunos tipos comunes de cargas de trabajo y los objetos del controlador Kubernetes que puedes crear para ejecutarlos en tu clúster, incluidos los siguientes:

  • Aplicaciones sin estado
  • Aplicaciones con estado
  • Trabajos por lotes
  • Daemons

Aplicaciones sin estado

Una aplicación sin estado no conserva su estado ni guarda datos en el almacenamiento continuo: todos los datos de usuario y de sesión permanecen con el cliente.

Algunos ejemplos de aplicaciones sin estado incluyen frontends web, como Nginx, servidores web como Apache Tomcat y otras aplicaciones web.

Puedes crear una Implementación de Kubernetes para implementar una aplicación sin estado en tu clúster. Los Pods que crean las Implementaciones no son únicos y no conservan su estado, lo que facilita el escalamiento y la actualización de aplicaciones sin estado.

Aplicaciones con estado

Una aplicación con estado requiere que su estado se guarde o sea persistente. Las aplicaciones con estado usan almacenamiento continuo, como los volúmenes persistentes, para guardar datos a fin de que los usen el servidor o los otros usuarios.

Los ejemplos de aplicaciones con estado incluyen bases de datos, como MongoDB y colas de mensajes como Apache ZooKeeper.

Puedes crear un StatefulSet de Kubernetes para implementar una aplicación con estado. Los Pods que crean los StatefulSets tienen identificadores únicos y pueden actualizarse de forma ordenada y segura.

Trabajos por lotes

Los trabajos por lotes representan tareas finitas, independientes y, a menudo, paralelas que se ejecutan hasta su finalización. Algunos ejemplos de trabajos por lotes incluyen tareas automáticas o programadas como enviar correos electrónicos, procesar videos y realizar cálculos costosos.

Puedes crear un Trabajo de Kubernetes para ejecutar y administrar una tarea por lotes en tu clúster. Puedes especificar la cantidad de Pods que deben finalizar sus tareas antes de que se complete el Trabajo, así como la cantidad máxima de Pods que deben ejecutarse en paralelo.

Daemons

Los daemons realizan tareas continuas en segundo plano en sus nodos asignados sin necesidad de que intervenga el usuario. Algunos ejemplos de daemons incluyen los recopiladores de registros, como Fluentd y los servicios de supervisión.

Puedes crear un DaemonSet de Kubernetes para implementar un daemon en tu clúster. Los DaemonSets crean un Pod por nodo y puedes elegir en qué nodo específico se debe implementar un DaemonSet.

Administra objetos de carga de trabajo

Puedes crear, administrar y borrar objetos con métodos imperativos y declarativos. En las secciones siguientes, se describen estos métodos y las herramientas que puedes usar para emplearlos:

Comandos imperativos

Los comandos imperativos te permiten crear, ver, actualizar y borrar objetos con rapidez a través de kubectl. Estos comandos son útiles para tareas únicas o a fin de realizar cambios en objetos activos en un clúster. Los comandos imperativos se usan, por lo general, para operar en objetos activos implementados en tu clúster.

kubectl cuenta con varios comandos basados en verbos para crear y editar objetos de Kubernetes. Por ejemplo:

  • run: genera un objeto nuevo en el clúster. A menos que se especifique lo contrario, run crea un objeto de implementación. run también admite varios generadores adicionales.
  • expose: crea un objeto de Servicio nuevo para balancear las cargas del tráfico en un conjunto de pods etiquetados.
  • autoscale: crea un nuevo objeto de escalador automático para escalar de forma automática y horizontal un objeto de controlador, como una implementación.

Los comandos imperativos no requieren archivos de configuración ni una comprensión sólida del esquema de objetos.

Configuración de objetos imperativa

La configuración de objetos imperativa crea, actualiza y borra objetos mediante archivos de configuración que contienen definiciones de objetos completas. Puedes almacenar los archivos de configuración de objetos en los sistemas de control de origen y auditar los cambios con más facilidad que si usas los comandos imperativos.

Puedes ejecutar operaciones kubectl apply, delete y replace con archivos de configuración o directorios que contengan archivos de configuración.

Configuración de objetos declarativa

La configuración de objetos declarativa opera en archivos de configuración almacenados de forma local, pero no requiere una definición explícita de las operaciones que se ejecutarán. En su lugar, las operaciones se detectan por objeto de forma automática mediante kubectl. Esto es útil si trabajas con un directorio de archivos de configuración con muchas operaciones diferentes. La administración de objetos declarativa requiere una comprensión sólida de los esquemas de objetos y los archivos de configuración.

Puedes ejecutar kubectl apply para crear y actualizar objetos de forma declarativa. apply actualiza objetos con una lectura de todo el objeto activo, un cálculo de las diferencias y una fusión de estas diferencias mediante solicitudes de parches al servidor de API.

Console

Una vez que implementaste una carga de trabajo con kubectl o la API, puedes usar el menú Cargas de trabajo de GKE en GCP Console para inspeccionar, administrar y editar las cargas de trabajo que se ejecutan en los clústeres.

El menú ofrece las características siguientes:

  • Puedes usar el editor de texto basado en YAML para editar objetos en vivo desde tu navegador web.
  • Puedes ver información detallada sobre los objetos, lo que incluye el historial de revisiones, eventos y actividades recientes, y sus Pods administrados.
  • Puedes escalar Implementaciones, Trabajos y StatefulSets con facilidad.
  • Puedes ajustar la escala de forma automática, activar actualizaciones progresivas y escalar implementaciones de forma manual desde el menú de Acciones.
  • Puedes usar Cloud Shell para inspeccionar, editar y borrar cualquier objeto.

API

Puedes usar la API de REST de GKE y la API de Kubernetes junto con las Bibliotecas cliente de Google Cloud para crear y administrar cargas de trabajo de manera programática.

Archivos de configuración

Cuando implementas una carga de trabajo con cualquiera de los métodos anteriores, GKE agrega un archivo de configuración a tu clúster que representa el objeto.

La configuración activa de un objeto puede diferir de su archivo local. YAML se usa con más frecuencia para crear y representar objetos de Kubernetes. También puedes usar JSON.

Para obtener más información sobre las especificaciones de objetos, los estados y la API de Kubernetes, consulta Fundamentos de los objetos de Kubernetes y la referencia de la API de Kubernetes.

Inspecciona opciones de configuración activas

Console

Para inspeccionar la configuración activa de un objeto implementado, realiza los pasos siguientes:

  1. Visita el menú Cargas de trabajo de Google Kubernetes Engine en GCP Console.

    Visitar el menú Cargas de trabajo

  2. Selecciona la carga de trabajo deseada.

  3. Haz clic en YAML.

gcloud

Para inspeccionar la configuración activa de un objeto implementado, ejecuta el comando siguiente:

kubectl get [OBJECT_TYPE] [OBJECT_NAME] -o yaml

[OBJECT_TYPE] puede ser deployment, statefulset, job o, también, otro tipo de objeto. Por ejemplo:

kubectl get deployment my-stateless-app -o yaml

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Kubernetes Engine