It's me again 🙃 wanted to confirm I understood something about the architecture -
i'm trying to figure out the difference between :
• a
Run configuration
(Local, Universal, Docker, Kubernetes)
• an
Agent
(e.g. Local, Kubernetes, Docker)
• and an
Executor
- (Local, LocalDask, and DaskExecutor)
If i understand correctly -
• our
Agent
is the entity (an always-running program, basically) which communicates with the Prefect server (and its scheduler, etc.) and brings jobs to execution phase. If it lives in Kubernetes then by default it executes flows as Kubernetes jobs , but - if we were to pick a "local"
Run configuration
- it would run it on the agent itself?
• the
Run Configuration
determines
where the
Agent
runs the flow (e.g., if we picked a
Docker
run_configuration for our
Docker
agent - then it would run as a docker image
inside the docker image? or alongside it - as a "sibling" docker instance?)
• the
Executor
determines
how the flow should be executed, so for example if we had a
LocalDask
executor running in a
Docker
run_config with a
Docker
Agent - it would spin up a local Dask cluster
inside the docker that's running the job? but if we picked a
DaskExecutor
then the flow would actually be executed
outside the docker that's running the flow? (assuming our dask cluster runs alongside our Docker Daemon, e.g. on EC2)
did i get it right or am i missing something? 😄