Diseña la separación de cargas de trabajo

En este documento, se proporciona una descripción general de la administración de cargas de trabajo en Google Distributed Cloud (GDC) aislado. Se tratan los siguientes temas:

Si bien se recomiendan algunos diseños de implementación de cargas de trabajo, no es necesario seguirlos exactamente como se indican. Cada universo de GDC tiene requisitos y consideraciones únicos que deben satisfacerse caso por caso.

Dónde implementar cargas de trabajo

En la plataforma de GDC, las operaciones para implementar cargas de trabajo de máquinas virtuales (VM) y cargas de trabajo de contenedores son diferentes. En esta sección, se presentan las diferencias y se indica dónde implementar cada recurso.

Cargas de trabajo basadas en VM

Puedes crear VMs para alojar tus cargas de trabajo basadas en VM. Tienes muchas opciones de configuración para la forma y el tamaño de tu VM que te ayudarán a satisfacer mejor los requisitos de tu carga de trabajo basada en VM. Debes crear una VM en un proyecto, que puede tener muchas VMs y cargas de trabajo de VM. Para obtener más información, consulta la descripción general de las VMs.

Los proyectos que solo contienen cargas de trabajo basadas en VM no requieren un clúster de Kubernetes. Por lo tanto, no es necesario que aprovisiones clústeres de Kubernetes para las cargas de trabajo basadas en VM.

Cargas de trabajo basadas en contenedores

Puedes implementar cargas de trabajo basadas en contenedores en un Pod de un clúster de Kubernetes. Los clústeres de Kubernetes se pueden adjuntar a uno o varios proyectos, pero no son un recurso secundario de un proyecto. Te recomendamos que solo adjuntes clústeres a proyectos en el entorno de implementación adecuado. Por ejemplo, un clúster para cargas de trabajo de producción se vincula a un proyecto para cargas de trabajo de producción.

Para la programación de Pods dentro de un clúster de Kubernetes, GDC adopta los conceptos generales de Kubernetes sobre programación, interrupción y desalojo. Las prácticas recomendadas para programar Pods dentro de un clúster varían según los requisitos de tu carga de trabajo.

Para obtener más información sobre los clústeres de Kubernetes, consulta la descripción general de los clústeres de Kubernetes. Consulta la Descripción general de las cargas de trabajo de contenedores para obtener detalles sobre la administración de tus contenedores en un clúster de Kubernetes.

Prácticas recomendadas para diseñar clústeres de Kubernetes

En esta sección, se presentan las prácticas recomendadas para diseñar clústeres de Kubernetes:

Crea clústeres separados por entorno de implementación

Además de proyectos separados por entorno de implementación, te recomendamos que diseñes clústeres de Kubernetes separados por entorno de implementación. Si separas el clúster y el proyecto de Kubernetes por entorno, aíslas el consumo de recursos, las políticas de acceso, los eventos de mantenimiento y los cambios de configuración a nivel del clúster entre tus cargas de trabajo de producción y las que no son de producción.

En el siguiente diagrama, se muestra un diseño de clúster de Kubernetes de ejemplo para varias cargas de trabajo que abarcan proyectos, clústeres, entornos de implementación y clases de máquinas.

Configuración de GDC

En esta arquitectura de muestra, se supone que las cargas de trabajo dentro de un entorno de implementación pueden compartir clústeres. Cada entorno de implementación tiene un conjunto independiente de clústeres de Kubernetes. Luego, asignas proyectos al clúster de Kubernetes del entorno de implementación adecuado. Un clúster de Kubernetes se puede subdividir aún más en varios grupos de nodos para diferentes requisitos de clase de máquina.

Como alternativa, diseñar varios clústeres de Kubernetes es útil para las operaciones de contenedores, como en las siguientes situaciones:

  • Tienes algunas cargas de trabajo fijadas en una versión específica de Kubernetes, por lo que mantienes diferentes clústeres en diferentes versiones.
  • Tienes algunas cargas de trabajo que requieren diferentes necesidades de configuración del clúster, como la política de copias de seguridad, por lo que creas varios clústeres con diferentes configuraciones.
  • Ejecutas copias de un clúster en paralelo para facilitar las actualizaciones de versiones disruptivas o una estrategia de implementación azul-verde.
  • Compilas una carga de trabajo experimental que corre el riesgo de limitar el servidor de API o cualquier otro punto único de falla dentro de un clúster, por lo que la aíslas de las cargas de trabajo existentes.

En el siguiente diagrama, se muestra un ejemplo en el que se configuran varios clústeres por entorno de implementación debido a requisitos como las operaciones de contenedores que se describieron en la sección anterior.

Configuración de GDC

Crea menos clústeres

Para lograr un uso eficiente de los recursos, te recomendamos diseñar la menor cantidad posible de clústeres de Kubernetes que cumplan con tus requisitos para separar los entornos de implementación y las operaciones de contenedores. Cada clúster adicional genera un consumo de recursos de sobrecarga adicional, como los nodos de plano de control adicionales que se requieren. Por lo tanto, un clúster más grande con muchas cargas de trabajo utiliza los recursos de procesamiento subyacentes de manera más eficiente que muchos clústeres pequeños.

Cuando hay varios clústeres con configuraciones similares, se genera una sobrecarga de mantenimiento adicional para supervisar la capacidad del clúster y planificar las dependencias entre clústeres.

Si un clúster se acerca a su capacidad máxima, te recomendamos que agregues nodos adicionales en lugar de crear uno nuevo.

Crea menos grupos de nodos dentro de un clúster

Para lograr un uso eficiente de los recursos, recomendamos diseñar menos grupos de nodos más grandes dentro de un clúster de Kubernetes.

Configurar varios grupos de nodos es útil cuando necesitas programar pods que requieren una clase de máquina diferente a la de otros. Crea un grupo de nodos para cada clase de máquina que requieran tus cargas de trabajo y configura la capacidad de nodos en el ajuste de escala automático para permitir un uso eficiente de los recursos de procesamiento.