As instâncias do ACK One Fleet distribuem aplicativos em vários clusters associados por meio de políticas declarativas, sem necessidade de repositório Git. Defina uma PropagationPolicy para selecionar clusters específicos e uma OverridePolicy para aplicar substituições de configuração por cluster. A instância Fleet gerencia a sincronização automaticamente.
Como funciona
Crie os recursos do aplicativo em uma instância Fleet e defina políticas de distribuição e substituição para controlar a propagação desses recursos para os clusters associados.
Crie recursos de aplicativo (Deployments, Services, ConfigMaps, entre outros) na instância Fleet.
Crie uma
PropagationPolicyouClusterPropagationPolicypara selecionar os clusters de destino e definir regras de agendamento.Opcionalmente, crie uma
OverridePolicyouClusterOverridePolicypara aplicar diferenças de configuração específicas por cluster.A instância Fleet sincroniza automaticamente as atualizações subsequentes de recursos com todos os clusters de destino.
Crie a PropagationPolicy e a OverridePolicy apenas uma vez durante a configuração inicial. Ambas as políticas permanecem ativas após a criação, e quaisquer atualizações futuras de recursos são propagadas automaticamente. Use kubectl amc para verificar o progresso da distribuição nos clusters associados.
Recursos avançados
Agendamento de carga de trabalho
As instâncias do ACK One Fleet agendam réplicas de pods nos clusters associados com base nas políticas de distribuição. Há dois modos de agendamento disponíveis:
Agendamento por peso estático
O administrador do cluster atribui um peso fixo a cada cluster associado. O agendador aloca as réplicas de pods proporcionalmente a esses pesos.
Para obter detalhes sobre a configuração, consulte replicaScheduling.
Agendamento por peso dinâmico
O agendador calcula dinamicamente o peso de cada cluster com base nos recursos disponíveis no momento e aloca as réplicas de pods proporcionalmente.
Para obter detalhes sobre a configuração, consulte Distribuição dinâmica e desescalonamento.
Desescalonamento
Os recursos disponíveis nos clusters associados mudam ao longo do tempo. Se um pod não puder ser agendado devido a baixa prioridade ou recursos insuficientes, o desescalonador o moverá automaticamente para outro cluster com recursos disponíveis. O desescalonamento vem ativado por padrão.
Para ver as etapas de verificação, consulte Verificar desescalonamento.
Failover no nível do aplicativo
Quando cargas de trabalho online e offline compartilham um cluster, jobs offline podem sofrer interrupções causadas por falhas de nó, preempção de recursos ou liberação de instâncias preemptíveis. O failover no nível do aplicativo detecta quando um job para de executar e o migra automaticamente para outro cluster.
Para ver um exemplo de configuração usando PyTorchJob com gang scheduling, consulte Como usar Kube Queue em uma instância Fleet e agendar PyTorchJob usando gang scheduling.
Gang scheduling multicluster
O gang scheduling garante o agendamento simultâneo de todos os pods de um grupo correlacionado. Caso algum pod não possa ser alocado, nenhum pod do grupo será agendado. As instâncias do ACK One Fleet estendem esse recurso para múltiplos clusters usando pré-alocação de recursos ou verificações dinâmicas para posicionar todo o grupo em um único cluster.
Esse mecanismo é particularmente útil para jobs distribuídos de IA e processamento de dados:
Jobs de treinamento PyTorch e TensorFlow (arquitetura master-worker): garante que o pod mestre e todos os pods workers fiquem no mesmo cluster, mantendo a comunicação direta.
Jobs Spark (arquitetura driver-executor): garante a colocalização do pod driver e de todos os pods executors, evitando sobrecarga de rede entre clusters.
Em conjunto com o desescalonamento e o failover no nível do aplicativo, o gang scheduling multicluster assegura que os jobs de IA cheguem a clusters com recursos suficientes e continuem executando sem intervenção manual. Para mais detalhes, consulte Distribuição de jobs.
Recursos distribuíveis
As políticas de distribuição e de substituição suportam todos os recursos listados na tabela a seguir. Por padrão, qualquer principal com permissão para criar recursos em uma instância Fleet também pode distribuir esses recursos aos clusters associados.
|
Nível do recurso |
Tipo de recurso |
APIVersion |
Política de distribuição |
Política de substituição |
|
Cluster |
Namespace |
v1 |
Compatível |
Compatível |
|
PersistentVolume |
v1 |
Compatível |
Compatível |
|
|
StorageClass |
storage.k8s.io/v1 |
Compatível |
Compatível |
|
|
CustomResourceDefinition |
apiextensions.k8s.io/v1 |
Compatível |
Compatível |
|
|
Namespace |
Deployment |
apps/v1 |
Compatível |
Compatível |
|
StatefulSet |
apps/v1 |
Compatível |
Compatível |
|
|
DaemonSet |
apps/v1 |
Compatível |
Compatível |
|
|
Job |
batch/v1 |
Compatível |
Compatível |
|
|
CronJob |
batch/v1 |
Compatível |
Compatível |
|
|
Ingress |
networking.k8s.io/v1 |
Compatível |
Compatível |
|
|
Service |
v1 |
Compatível |
Compatível |
|
|
PersistentVolumeClaim |
v1 |
Compatível |
Compatível |
|
|
ConfigMap |
v1 |
Compatível |
Compatível |
|
|
Secret |
v1 |
Compatível |
Compatível |
|
|
Pod |
v1 |
Compatível |
Compatível |
|
|
LimitRange |
v1 |
Compatível |
Compatível |
|
|
ResourceQuota |
v1 |
Compatível |
Compatível |
|
|
HorizontalPodAutoscaler |
autoscaling/v2 |
Compatível |
Compatível |
Próximos passos
|
Tarefa |
Descrição |
Referência |
|
Implante seu primeiro aplicativo |
Use |
|
|
Compreenda os parâmetros das políticas |
Conheça o conjunto completo de parâmetros para |
|
|
Verifique o progresso da distribuição |
Execute |