Armada

Armada

A CNCF Sandbox Project

Managing Kubernetes clusters is very complex and time-consuming and especially when it comes to deploying and managing multiple Helm charts and Kubernetes manifests across those clusters. with the help of Armada, all these processes can be simplified. Let's understand it in detail.

What is Armada?

Technically, Armada is a multi-Kubernetes-cluster batch job meta-scheduler. It is an opensource tool that helps organizations distribute millions of batch jobs per day across many nodes across many clusters.

Let us understand it analogically:

Just as a traffic controller manages the flow of traffic through an intersection, Armada manages the flow of batch jobs across multiple Kubernetes clusters. The traffic controller uses their knowledge of the roads, traffic patterns, and vehicle capabilities to ensure smooth and efficient traffic flow, just as Armada uses its understanding of the Kubernetes clusters' computing resources and capabilities to schedule and allocate batch jobs effectively.

The batch jobs can be seen as vehicles moving through the intersection, with each Kubernetes cluster representing a different lane. The traffic controller (Armada) ensures that each vehicle (batch job) is assigned to the appropriate lane (Kubernetes cluster) based on its size and capacity and that the overall flow of traffic is optimized to minimize congestion and maximize throughput.

In order to understand the above things we have to understand the architecture of the Armada first.

Architecture of Armada

Armada is built on top of Kubernetes clusters and uses a client-server architecture to manage and execute batch jobs and complex deployments.Armada consists of two main components:

  • The Armada server, which is responsible for accepting jobs from users and deciding in what order, and on which Kubernetes cluster, jobs should run. Users submit jobs to the Armada server through the armadactl command-line utility or via a gRPC or REST API.

  • The Armada executor, of which there is one instance running in each Kubernetes cluster that Armada is connected to. Each Armada executor instance regularly notifies the server of how much spare capacity it has available and requests jobs to run. Users of Armada never interact with the executor directly.

    The visual of what is mentioned above.

some must-know terms:

  1. Job: A job is the most basic unit of work in Armada, and is represented by a Kubernetes pod specification (pod spec) with additional metadata specific to Armada.

  2. Batch Job: A batch job is a type of workload that runs for a finite amount of time to perform a specific task or a set of tasks. These jobs are often time-sensitive and need to be completed within a specific deadline or within a specific time window.

  3. Chart: A Helm chart is a package of pre-configured Kubernetes resources that make it easy to deploy and manage applications in Kubernetes environments.

  4. Manifest: A Kubernetes manifest is a set of YAML files that define the desired state of a Kubernetes object, such as deployment, pod, or service.

  5. Config: A Kubernetes ConfigMap is a key-value store that provides a way to store and manage configuration data in a Kubernetes environment.

  6. Endpoint: A Kubernetes Endpoint is an object that represents a set of network addresses that are used to access a Kubernetes service

key features

  1. Job leasing: The job leasing feature in Armada simplifies the management of batch jobs in Kubernetes environments, making it easier to schedule and execute jobs while providing additional capabilities for job scheduling and it also provides jobs being lost if a cluster becomes unavailable.

  2. Job Set: Job Set is a feature in Armada that allows users to manage multiple Kubernetes jobs as a single logical entity. A Job Set consists of a collection of related Kubernetes Jobs that are created and managed together as a single unit.

  3. Job events: A job event is generated whenever the state of the job changes (e.g. when changing from submitted to running or from running to completed). It provides real-time notifications and updates about the status of batch jobs running in a Kubernetes cluster. When enabled, Job Events in Armada emit events related to the lifecycle of batch jobs, such as job creation, job completion, job failure, and job deletion.

  4. Armada Endpoint: Armada provides a custom Kubernetes resource called ArmadaEndpoint, which allows users to define and manage application endpoints. This enables users to manage the routing and load balancing of application traffic in a Kubernetes environment

Conclusion

In conclusion, Armada is a powerful tool for managing batch jobs and complex deployments in Kubernetes environments. Its features, such as job leasing, job sets, and job events, simplify the management of batch jobs, increase operational efficiency, and provide real-time updates and notifications about job status.

you can read more about it on Armada official website or Armada-GitHub

If you have any further questions about Armada or Kubernetes, or if you need help with any other technology-related issues, feel free to ask me or in the slack channel.