# Prerequisites

This guide covers the requirements for installing and running a production-ready Alluxio cluster.

## High-Level Requirements

Before you begin, ensure your environment meets the following prerequisites.

### Hardware

| Component            | Requirement    |
| -------------------- | -------------- |
| **CPU Architecture** | x86\_64, ARM64 |

### Software

| Component        | Requirement            | Notes                                                                                       |
| ---------------- | ---------------------- | ------------------------------------------------------------------------------------------- |
| **Linux Kernel** | 5.4 or higher          | Recommended for optimal performance and feature support.                                    |
| **Java**         | JDK 8 or 11            | Required on all nodes where Alluxio components will run.                                    |
| **etcd**         | Version 3.4 or higher  | Alluxio requires a running etcd cluster for service discovery and managing the mount table. |
| **libfuse**      | Version 3.10 or higher | Required on all nodes where you plan to run an Alluxio FUSE client.                         |

### Networking

Alluxio components communicate over specific network ports. Ensure your firewall rules and network policies allow connectivity between the Alluxio pods and between your applications and the Alluxio cluster.

## Deploying on Kubernetes (Recommended)

Deploying with the Alluxio Kubernetes Operator is the recommended method for most use cases.

### Kubernetes Cluster Prerequisites

* **Kubernetes Version:** 1.19 or higher.
* **Helm:** Version 3.6.0 or higher must be installed.
* **RBAC Permissions:** The user or service account deploying Alluxio must have permissions to create `CustomResourceDefinition` (CRD), `ServiceAccount`, `ClusterRole`, and `ClusterRoleBinding`.

### Resource Recommendations

We provide two reference configurations for deploying Alluxio on Kubernetes.

* **Minimum:** Suitable for basic functional testing.
* **Preferred:** Recommended for Proof of Concept (PoC) deployments and provides a better starting point for performance tuning.

| Component       | Resource        | Minimum        | Preferred (Operator Default)       |
| --------------- | --------------- | -------------- | ---------------------------------- |
| **K8s Node**    | CPU / Memory    | 8 Cores / 32GB | 16 Cores / 64GB                    |
| **Coordinator** | CPU / Memory    | 4 Core / 12GB  | 8 Core / 16GB                      |
| **Worker**      | CPU / Memory    | 4 Core / 12GB  | 8 Core / 24GB                      |
| **FUSE**        | CPU / Memory    | 4 Core / 8GB   | 8 Core / 20GB                      |
| **Page Store**  | Disk per Worker | 100GB          | 100GB+ (Adjust based on your data) |

> **Note:** These are starting points. You should adjust the CPU limits, memory, and storage based on your specific workload and performance requirements.

### ETCD

ETCD is a critical component to the Alluxio cluster and must be continuously available and stable for Alluxio to operate. By default, 3 ETCD nodes will be deployed for high availability, such that 2 must always be running to maintain quorum.

> If quorum is lost, it will be difficult to recover from, forcing the Alluxio cluster to be recreated.

For production environments, it is recommended to deploy ETCD on 3 stable persistent nodes, avoiding

* Transient nodes that are unstable and are known to have a chance of going down
* Nodes with heavy use, avoiding resource contention problems

## Next Steps

Once you have met these prerequisites, you can proceed with the installation:

* [**Install on Kubernetes**](https://documentation.alluxio.io/ee-ai-en/ai-3.7/start/installing-on-kubernetes)
