Skip to content

Gestão de Recursos em Flow Runs

Gabriel Pisa edited this page Oct 8, 2024 · 2 revisions

Como modificar recursos alocados para Runs de pipelines no prefect?

Vocabulário:

  • namespaces no Kubernetes: Consistem num mecanimos que "permite isolar grupos de recursos dentro do cluster". Isto facilita o controle de gastos e possibilita uma visão fina do consumo de recursos. Na BD temos o namespace prefect-agent-basedosdados, responsável pelo computo dos recursos alocados para as runs de pipelines com agent basedosdados.

  • Agents do prefect e Kubernetes: O Prefect utiliza um componente chamado agent, que é responsável por observar os flow runs pendentes e iniciar a criação dos jobs no cluster Kubernetes. O agent é configurado para funcionar dentro de um namespace específico, e sempre que ele detecta um novo flow run, ele aciona o Kubernetes para criar o job e, consequentemente, o pod onde o flow será executado.

  • Flow runs e jobs: Para cada flow run, um job é criado dentro do namespace especificado. Quando o job é deployado no cluster kubernetes, o Kubernetes aloca um pod fazer a execução.

Para modificar a alocação de recursos, basta alterar os parâmetros de configuração das runs com a classe KubernetesRun

Os limites modificados são válidos somente para este Flow

from prefect.run_configs import KubernetesRun

flow_siasus.run_config = KubernetesRun(
    image=constants.DOCKER_IMAGE.value,
    memory_limit = '12Gi',
    memory_request = '4Gi',
    cpu_limit = 1,
    )

Link para o flow

  • memory_limit = limite de memória alocado no pod para a Run;
  • memory_request = valor de memória alocado no início da Run;
  • cpu_limit = quantidade de CPUs alocados