# 资源需求和兼容性

本指南涵盖了Alluxio的规划和安装，描述了运行Alluxio所需的必要资源配置。\
它包括CPU、内存、磁盘和网络等资源的需求说明。\
此外，它还描述了操作系统（服务器、客户端和内核）的兼容性需求。

## 资源需求

推荐将Alluxio在Kubernetes（k8s）上进行部署。\
Alluxio coordinator、worker和fuse组件各自需要特定的CPU、内存和磁盘资源。\
此外，整个Alluxio集群需要特定的网络端口才能进行通信。\
确保这些资源在组件之间的正确配置是实现Alluxio高效运行的关键。

ETCD也用于Alluxio的服务发现和存储挂载表。请参阅[在Kubernetes上安装Alluxio的说明](https://documentation.alluxio.io/ee-ai-cn/ai-3.6/start/install/install-alluxio-on-kubernetes)以设置ETCD。

### Kubernetes部署

一些通用的 Kubernetes 前提条件包括：

* Kubernetes 集群版本至少为 1.19，并启用了 [Feature Gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/)
* 确保集群的 Kubernetes 网络策略（Network Policy）允许应用（Alluxio 客户端）与 Alluxio Pods 之间在指定端口上的通信
* Kubernetes 集群必须安装 Helm 3，版本需为 3.6.0 或更高
* 配置容器镜像仓库，用于存储和管理容器镜像
* 权限相关配置，参考：[**使用 RBAC 授权**](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)
  * 拥有创建 CRD（自定义资源定义）的权限
  * 拥有为 operator pod 创建 ServiceAccount、ClusterRole 和 ClusterRoleBinding 的权限
  * 拥有创建 operator 所在命名空间的权限

在Kubernetes环境中，提供了两套配置用于部署Alluxio集群：最低配置和推荐配置。

1. 最低配置确保Alluxio集群可以运行并支持基本的IO功能测试。
2. 推荐配置利用Alluxio部署模式中的默认设置。它优化了计算、内存和存储资源，以支持基本的PoC场景。

这些配置旨在适应各种用例，提供灵活性和可扩展性，同时确保Alluxio集群在Kubernetes环境中的稳定和高效运行。

#### 最小和推荐

下表比较了Alluxio系统在K8S部署中最小和推荐配置的资源。

| Components          | Minimum                                                                       | Preferred (Operator default)                                                                                              |
| ------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| K8s Node            | <p>cpu: 8 CPU cores<br>mem: 32G</p>                                           | <p>cpu: 16 CPU cores<br>mem: 64G</p>                                                                                      |
| Alluxio coordinator | <p>cpu request: 1<br>cpu limit: 1<br>mem request: 1G<br>mem limit: 12G</p>    | <p>cpu request: 1<br>cpu limit: 1<br>mem request: 8G<br>mem limit: 10G<br>java heap memory: 4G<br>direct memory: 4G</p>   |
| Alluxio worker      | <p>cpu request: 1<br>cpu limit: 10<br>mem request: 512M<br>mem limit: 20G</p> | <p>cpu request: 1<br>cpu limit: 10<br>mem request: 16G<br>mem limit: 20G<br>java heap memory: 8G<br>direct memory: 8G</p> |
| Alluxio fuse        | <p>cpu request: 1<br>cpu limit: 6<br>mem request: 512M<br>mem limit: 16G</p>  | <p>cpu request: 1<br>cpu limit: 6<br>mem request: 12G<br>mem limit: 16G<br>java heap memory: 4G<br>direct memory: 8G</p>  |
| Page Store          | 100G                                                                          | 100G，请根据worker数量和实际使用数据量调整                                                                                                |

### 网络

因为Alluxio在大部分场景中充当存储缓存使用，建议将Alluxio组件部署在计算节点上或计算节点相近的物理位置以提升性能。\
我们建议在同一个网络中部署Alluxio。\
对于高性能情况，需要考虑额外的网络带宽和延迟要求。

注意：在极端情况下，Alluxio可能需要专门的高性能网络来支持高吞吐量数据传输。请联系我们获取基于您场景的详细信息。

## 兼容性

### 操作系统兼容性

Alluxio在K8s上运行在预打包的容器镜像上，并且能够部署在包括所有云提供商在内的任何容器基础设施环境中。

Kubernetes与主机操作系统或容器运行时的兼容性超出了本文档的范围。请参阅并遵守您选定的Kubernetes发行版或版本的[发行说明](https://kubernetes.io/releases/notes/)，以获取详细信息。

**Alluxio集群**

要在Kubernetes上运行Alluxio，必须满足某些先决条件以确保兼容性：

* 至少版本为1.19的Kubernetes集群，支持[特性门控](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/feature-gates/)。
* libfuse 3.10+的Linux操作系统
* 主机架构x86
