System Administration
medium

System Administration Question #019e3a4f

Question Statement
System Administration
#kubernetes
#cluster-autoscaler
#cost-optimization
#cloud-computing
Medium

Vamos supor que uma organização precisa processar grandes quantidades de dados em rajadas, em um cluster Kubernetes baseado em nuvem. Por exemplo: toda segunda-feira de manhã, eles precisam executar um lote de 1000 jobs computacionais de 1 hora cada, e esses jobs devem ser concluídos até segunda-feira à noite. Qual será o método mais econômico?

A

Executar um grupo de nós com o tamanho exato necessário para concluir o lote no prazo e usar uma combinação de taints, tolerations e nodeSelectors para reservar esses nós para os jobs em lote.

B

Aproveitar o Kubernetes Cluster Autoscaler para iniciar e parar nós automaticamente conforme necessário.

Correct
C

Comprometer-se com um nível específico de gastos para obter preços com desconto (com, por exemplo, "instâncias reservadas" ou mecanismos similares).

D

Usar PriorityClasses para que o job semanal em lote tenha prioridade sobre outras cargas de trabalho em execução no cluster e possa ser concluído no prazo.

Official Explanation / Community Explanations

O método mais econômico para lidar com cargas de trabalho em rajada em um cluster Kubernetes baseado em nuvem é usar o Kubernetes Cluster Autoscaler para iniciar e parar nós automaticamente conforme necessário. Essa abordagem ajusta dinamicamente o tamanho do cluster com base nos pods pendentes, garantindo que os recursos sejam provisionados apenas quando necessário e reduzidos durante períodos ociosos, minimizando custos.

Como Funciona

O Cluster Autoscaler monitora o status de agendamento dos pods. Quando os pods não podem ser agendados devido a recursos insuficientes, ele aciona a API do provedor de nuvem para adicionar novos nós. Por outro lado, quando os nós estão subutilizados por um período configurável, ele os remove. Isso alinha o consumo de recursos com a demanda real, eliminando desperdícios de superprovisionamento.

Por que a Resposta Correta está Certa

  • Eficiência de Custos: O Cluster Autoscaler garante que os nós existam apenas quando necessário. Para o cenário de rajada, os nós serão adicionados na segunda-feira de manhã para lidar com os 1000 jobs e removidos após a conclusão, evitando cobranças por recursos ociosos.
  • Automação: Nenhuma intervenção manual é necessária; o autoscaler reage automaticamente às mudanças na carga de trabalho.
  • Integração Nativa com Nuvem: Funciona com os principais provedores de nuvem (AWS, GCP, Azure) e respeita tipos de instância, zonas e políticas de escalonamento.

Por que as Respostas Incorretas estão Erradas

  • Executar um grupo de nós com o tamanho exato necessário usando taints, tolerations e nodeSelectors: Essa abordagem requer dimensionamento e provisionamento manuais. Se a carga de trabalho variar ou a estimativa estiver errada, os recursos podem ser desperdiçados ou insuficientes. Também carece de escalonamento dinâmico, levando a possível superprovisionamento.
  • Comprometer-se com um nível específico de gastos com instâncias reservadas: Instâncias reservadas oferecem descontos para cargas de trabalho estáveis, mas são inflexíveis. Para cargas de trabalho em rajada, você paga por capacidade que fica ociosa a maior parte da semana, tornando-se antieconômico.
  • Usar PriorityClasses para dar prioridade aos jobs em lote: PriorityClasses afetam a ordem de agendamento, mas não adicionam ou removem nós. Se o cluster não tiver capacidade, os pods de alta prioridade podem permanecer pendentes. Isso não aborda o provisionamento de recursos e pode levar a jobs incompletos ou preempção de outras cargas de trabalho sem economia de custos.