Las instancias ACK One Fleet distribuyen aplicaciones en varios clústeres asociados mediante directivas declarativas, sin necesidad de un repositorio Git. Defina una PropagationPolicy para seleccionar los clústeres de destino y una OverridePolicy para aplicar anulaciones de configuración específicas por clúster. Después, deje que la instancia Fleet se encargue automáticamente de la sincronización.
Funcionamiento
Cree los recursos de su aplicación en una instancia Fleet. Luego, defina las directivas de distribución y anulación para controlar cómo se propagan dichos recursos a los clústeres asociados.
Cree los recursos de la aplicación (Deployments, Services, ConfigMaps, entre otros) en la instancia Fleet.
Cree una
PropagationPolicyo unaClusterPropagationPolicypara seleccionar los clústeres de destino y establecer las reglas de programación.De manera opcional, cree una
OverridePolicyo unaClusterOverridePolicypara aplicar diferencias de configuración específicas de cada clúster.La instancia Fleet sincroniza automáticamente las actualizaciones posteriores de los recursos con todos los clústeres de destino.
Cree la PropagationPolicy y la OverridePolicy solo una vez durante la configuración inicial. Ambas directivas permanecen activas después de su creación y cualquier actualización futura de los recursos se propaga automáticamente. Use kubectl amc para comprobar el progreso de la distribución en los clústeres asociados.
Funciones avanzadas
Programación de cargas de trabajo
Las instancias ACK One Fleet programan réplicas de pods en los clústeres asociados según las directivas de distribución. Hay dos modos de programación disponibles:
Programación por peso estático
El administrador del clúster asigna un peso fijo a cada clúster asociado. El programador coloca las réplicas de pods de forma proporcional a esos pesos.
Para más detalles sobre la configuración, consulte replicaScheduling.
Programación por peso dinámico
El programador calcula de forma dinámica el peso de cada clúster con base en los recursos disponibles en ese momento. Después, coloca las réplicas de pods de manera proporcional.
Para más detalles sobre la configuración, consulte Distribución dinámica y desprogramación.
Desprogramación
Los recursos disponibles en los clústeres asociados cambian con el tiempo. Cuando un pod no se puede programar debido a una prioridad baja o a la falta de recursos, el desprogramador lo mueve automáticamente a otro clúster donde haya recursos disponibles. La desprogramación está habilitada de forma predeterminada.
Para conocer los pasos de verificación, consulte Verify descheduling.
Failover a nivel de aplicación
Cuando las cargas de trabajo en línea y fuera de línea comparten un clúster, los trabajos fuera de línea pueden interrumpirse por fallas en los nodos, apropiación de recursos o liberación de preemptible instances. El failover a nivel de aplicación detecta cuándo un trabajo deja de ejecutarse y lo migra automáticamente a otro clúster.
Para ver un ejemplo de configuración con PyTorchJob y gang scheduling, consulte Cómo usar Kube Queue en una instancia Fleet y programar PyTorchJob mediante gang scheduling.
Gang scheduling en múltiples clústeres
El gang scheduling garantiza que todos los pods de un grupo correlacionado se programen al mismo tiempo. Si algún pod no se puede colocar, no se programa ninguno del grupo. Las instancias ACK One Fleet extienden esta función a varios clústeres mediante la preasignación de recursos o comprobaciones dinámicas de recursos para colocar todo el grupo en un solo clúster.
Esta función resulta especialmente útil para trabajos distribuidos de inteligencia artificial y procesamiento de datos:
Trabajos de entrenamiento de PyTorch y TensorFlow (arquitectura maestro-trabajador): garantiza que el pod maestro y todos los pods trabajadores se ubiquen en el mismo clúster, lo que mantiene la comunicación directa.
Trabajos de Spark (arquitectura controlador-ejecutor): garantiza que el pod controlador y todos los pods ejecutores estén en la misma ubicación, lo que evita la sobrecarga de red entre clústeres.
En conjunto con la desprogramación y el failover a nivel de aplicación, el gang scheduling en múltiples clústeres asegura que los trabajos de inteligencia artificial lleguen a clústeres con recursos suficientes y sigan ejecutándose sin intervención manual. Para más información, consulte Distribución de trabajos.
Recursos distribuibles
Tanto las directivas de distribución como las de anulación admiten todos los recursos de la siguiente tabla. De forma predeterminada, cualquier entidad de seguridad con permiso para crear recursos en una instancia Fleet también tiene permiso para distribuirlos a los clústeres asociados.
|
Nivel de recurso |
Tipo de recurso |
APIVersion |
Directiva de distribución |
Directiva de anulación |
|
Clúster |
Namespace |
v1 |
Compatible |
Compatible |
|
PersistentVolume |
v1 |
Compatible |
Compatible |
|
|
StorageClass |
storage.k8s.io/v1 |
Compatible |
Compatible |
|
|
CustomResourceDefinition |
apiextensions.k8s.io/v1 |
Compatible |
Compatible |
|
|
Namespace |
Deployment |
apps/v1 |
Compatible |
Compatible |
|
StatefulSet |
apps/v1 |
Compatible |
Compatible |
|
|
DaemonSet |
apps/v1 |
Compatible |
Compatible |
|
|
Job |
batch/v1 |
Compatible |
Compatible |
|
|
CronJob |
batch/v1 |
Compatible |
Compatible |
|
|
Ingress |
networking.k8s.io/v1 |
Compatible |
Compatible |
|
|
Service |
v1 |
Compatible |
Compatible |
|
|
PersistentVolumeClaim |
v1 |
Compatible |
Compatible |
|
|
ConfigMap |
v1 |
Compatible |
Compatible |
|
|
Secret |
v1 |
Compatible |
Compatible |
|
|
Pod |
v1 |
Compatible |
Compatible |
|
|
LimitRange |
v1 |
Compatible |
Compatible |
|
|
ResourceQuota |
v1 |
Compatible |
Compatible |
|
|
HorizontalPodAutoscaler |
autoscaling/v2 |
Compatible |
Compatible |
Pasos siguientes
|
Tarea |
Descripción |
Referencia |
|
Desplegar su primera aplicación |
Use |
|
|
Comprender los parámetros de las directivas |
Conozca el conjunto completo de parámetros de |
|
|
Comprobar el progreso de la distribución |
Ejecute |