armada

module
v0.22.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 2, 2026 License: Apache-2.0

README

Armada logo

One API. Any number of clusters. Millions of jobs.

The open-source batch job meta-scheduler that makes Kubernetes work at scale.

CircleCI Artifact Hub LFX Health Score OpenSSF Best Practices

Website · Quickstart · Documentation · Slack


What is Armada?

Kubernetes was built for services. Armada was built for batch.

When your job volume exceeds what a single cluster can handle, you need a control plane that sits above your fleet — routing jobs intelligently, fairly, and at scale. Armada is that layer.

Armada solves the problems Kubernetes wasn't designed to handle:

  • No job queue — Kubernetes has no concept of ordering. Jobs compete for resources with no fairness guarantees. Armada adds a proper queue with priority, fair-share, and rate limiting.
  • No multi-cluster coordination — Each Kubernetes cluster is an island. Armada routes jobs across as many clusters as you need from a single API.
  • Fine grained gang-scheduling — Distributed jobs that need all workers to start together (MPI, PyTorch, Spark) are either fully scheduled or held in queue. Armada's implementation is battle-tested at scale with deep fairness and preemption integration.
  • No fairness across teams — One team can starve everyone else. Armada enforces fair-share scheduling so heavy users don't permanently dominate shared infrastructure.

Armada is used in production at G-Research since 2020, processing millions of batch jobs per day across tens of thousands of nodes.


Features

Feature Description
🌐 Multi-cluster scheduling One API across unlimited Kubernetes clusters
⚖️ Fair-share queuing Dominant resource fairness across teams and queues
🔗 Gang scheduling Atomic startup for distributed workloads
⚡ Preemption Urgent jobs bump lower-priority work automatically
📊 Prometheus metrics Full observability into queue health and cluster utilisation
🔭 Lookout UI Web interface for monitoring jobs, queues, and clusters
🔒 Enterprise-ready Secure, highly available, OIDC authentication support

Getting started

The fastest way to get Armada running locally is with the Armada Operator:

git clone https://github.com/armadaproject/armada-operator.git
cd armada-operator
make kind-all

→ Full quickstart guide — get up and running in an instant!

armadactl

armadactl is installed automatically when you run make kind-all. To install it standalone or on a machine without the full Armada setup:

# download via script
scripts/get-armadactl.sh

# or grab the binary from the release page
https://github.com/armadaproject/armada/releases/latest

Local development

Armada runs locally via Goreman — dependencies (Redis, Postgres, Pulsar) run in containers, Armada components run as host processes built from source. Iteration is fast and debuggers attach directly.

mage kind                  # one-time: create local Kubernetes cluster
export KUBECONFIG=.kube/external/config

mage dev:up                # default — no auth
mage dev:up auth           # with OIDC via Keycloak
mage dev:up fake-executor  # no Kubernetes cluster needed
mage dev:down              # stop dependency containers

→ Full local development guide — profiles, procfiles, service ports, authentication, and debugging.


Use cases

Armada is used wherever batch jobs are too large, too many, or too complex for a single Kubernetes cluster:

  • Quantitative finance & HPC — millions of short-lived simulations per day with fair-share across research teams
  • ML and AI training — distributed GPU training with gang scheduling across clusters
  • Platform engineering — multi-tenant batch infrastructure with a single API surface
  • SLURM migration — familiar scheduling semantics (queues, priorities, preemption) on Kubernetes-native infrastructure
  • CI/CD at scale — priority control so critical merges always run first

In production

Armada has been running in production at G-Research since 2020.

Running Armada in production? Open a PR to add yourself to ADOPTERS.md 🙌


Community

Everyone is welcome — come and say hi! 👋


Contributing

We'd love your contributions — code, docs, bug reports, or ideas. All are welcome.


Documentation

Resource Link
Website & overview armadaproject.io
Quickstart armadaproject.io/getting-started
Architecture armadaproject.io/docs/architecture
API reference armadaproject.io/docs/api
Developer guide armadaproject.io/docs/developer-guide
Release notes github.com/armadaproject/armada/releases

Talks and videos



CNCF logo
Armada is a Cloud Native Computing Foundation Sandbox project 🚀
Apache 2.0 License

Directories

Path Synopsis
cmd
armadactl command
binoculars command
broadside command
Package main provides the Broadside load tester for Armada Lookout.
Package main provides the Broadside load tester for Armada Lookout.
eventingester command
executor command
fakeexecutor command
lookout command
lookoutingester command
scheduler command
server command
simulator command
testsuite command
internal
armadactl
Package armadactl contains all the business logic for armadactl.
Package armadactl contains all the business logic for armadactl.
broadside/actions
Package actions provides functionality for simulating bulk operations on jobs during Broadside load tests.
Package actions provides functionality for simulating bulk operations on jobs during Broadside load tests.
broadside/db
Package db provides database abstraction for the Broadside load tester.
Package db provides database abstraction for the Broadside load tester.
broadside/estimation
Package estimation provides data volume estimation and confirmation prompts for Broadside load tests.
Package estimation provides data volume estimation and confirmation prompts for Broadside load tests.
broadside/ingester
Package ingester simulates job ingestion events for the Broadside load tester.
Package ingester simulates job ingestion events for the Broadside load tester.
broadside/jobspec
Package jobspec provides shared job specifications and utilities for Broadside load testing.
Package jobspec provides shared job specifications and utilities for Broadside load testing.
broadside/metrics
Package metrics provides histogram-based metrics collection for Broadside components.
Package metrics provides histogram-based metrics collection for Broadside components.
broadside/orchestrator
Package orchestrator coordinates Broadside load test execution.
Package orchestrator coordinates Broadside load test execution.
broadside/querier
Package querier simulates user query load for the Broadside load tester.
Package querier simulates user query load for the Broadside load tester.
common/armadaerrors
Package armadaerrors contains generic errors that should be returned by code handling gRPC requests.
Package armadaerrors contains generic errors that should be returned by code handling gRPC requests.
common/database
Package database contains shared utilities for components that interact with Armada's PostgreSQL databases.
Package database contains shared utilities for components that interact with Armada's PostgreSQL databases.
common/errormatch
Package errormatch provides types and functions for matching job failure signals: exit codes, termination messages, and Kubernetes conditions.
Package errormatch provides types and functions for matching job failure signals: exit codes, termination messages, and Kubernetes conditions.
common/logging
Package logging provides structured logging utilities for Armada components.
Package logging provides structured logging utilities for Armada components.
common/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
executor/categorizer
Package categorizer classifies pod failures into a single named category with an optional subcategory, based on configurable rules.
Package categorizer classifies pod failures into a single named category with an optional subcategory, based on configurable rules.
lookout
Package lookout contains the Lookout API server, which serves the auto-generated REST API defined in swagger.yaml.
Package lookout contains the Lookout API server, which serves the auto-generated REST API defined in swagger.yaml.
lookout/configuration
Package configuration defines the configuration types for the Lookout server, including database, TLS, pruner and UI configuration.
Package configuration defines the configuration types for the Lookout server, including database, TLS, pruner and UI configuration.
lookout/gen/restapi
Package restapi Lookout v2 API
Package restapi Lookout v2 API
lookout/pruner
Package pruner contains the lookout database pruner.
Package pruner contains the lookout database pruner.
lookout/version
Package version exposes the Lookout backend's release version, commit, and build time.
Package version exposes the Lookout backend's release version, commit, and build time.
lookouthc/schema
Package schema contains the idempotent partitioner for the experimental hot-cold phase of Lookout.
Package schema contains the idempotent partitioner for the experimental hot-cold phase of Lookout.
lookoutingester/lookoutdb
Package lookoutdb provides the database-insertion layer for the Lookout ingester.
Package lookoutdb provides the database-insertion layer for the Lookout ingester.
scheduler/mocks
Package schedulermocks is a generated GoMock package.
Package schedulermocks is a generated GoMock package.
scheduler/retry
Package retry decides whether a failed job run should be retried or failed permanently.
Package retry decides whether a failed job run should be retried or failed permanently.
server/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
server/queryapi
Package queryapi implements the Armada server's Jobs gRPC service (the "Query API"), which serves programmatic job-status queries by reading the Lookout database (the job, job_run, job_spec and job_error tables) directly via the server's own connection pool.
Package queryapi implements the Armada server's Jobs gRPC service (the "Query API"), which serves programmatic job-status queries by reading the Lookout database (the job, job_run, job_spec and job_error tables) directly via the server's own connection pool.
testsuite/build
Package build info
Package build info
testsuite/eventwatcher
Utility for watching events.
Utility for watching events.
pkg
api
Package api is a reverse proxy.
Package api is a reverse proxy.
api/binoculars
Package binoculars is a reverse proxy.
Package binoculars is a reverse proxy.
api/schedulerobjects
Package schedulerobjects is a reverse proxy.
Package schedulerobjects is a reverse proxy.
scripts
merge_swagger command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL