在Kubernetes上部署Alluxio
Last updated
Last updated
Alluxio可以在Kubernetes上运行。本指南演示了如何使用Docker映像或helm
中包含的规范在Kubernetes上运行Alluxio
一个Kubernetes集群(版本> = 1.8)。在默认规范下,Alluxio workers可以通过设置sizeLimit
参数来决定emptyDir
卷的大小。这是Kubernetes 1.8版本中的一个Alpha特性。在使用前请确保此功能已启用。
一个Alluxio Docker镜像。如果使用私有Docker注册表,请参阅Kubernetes 。 确保允许应用程序(Alluxio客户端)和Alluxio Pods之间在已定义端口上的连接。
本教程介绍了在Kubernetes上的基本Alluxio安装。 Alluxio支持在Kubernetes上两种安装方法:使用图表或使用kubectl
。如果可选,helm
是首选安装Alluxio方法。如果没法使用helm
安装或需要额外定制化部署,则可以直接通过原生Kubernetes资源规范使用kubectl
。
注意:从Alluxio 2.3起,Alluxio仅支持helm 3。 参阅如何。
可以使用端口转发从kubernetes集群外部访问Alluxio UI。
注意:第一个master Pod i = 0
。当运行多个masters时,转发每个主机的端口。仅首席maste为Web UI提供服务。
###验证
一旦准备就绪,就可以从master Pod访问Alluxio CLI并运行基本的I/O测试。
从master Pod,执行以下命令
(可选)如果Alluxio master使用持久卷,则卷的状态应更改为CLAIMED
,卷声明的状态应为 BOUNDED
。你可以验证其状态如下
为了使用POSIX API,首先部署Alluxio FUSE守护程序。
短路访问使客户端可以绕过网络接口直接对worker执行读写操作。对于性能至关重要的应用程序,建议对Alluxio启用短路操作,因为当与Alluxio worker共置时,可以增加客户端的读写吞吐量。
启用短路操作的属性。 此特性默认启用的,但在Kubernetes环境下需要额外的配置才能在正常工作。有关如何配置短路访问参见以下各节。
禁用短路操作。 要禁用短路操作,该操作取决于你是如何部署的Alluxio。
注意:如前所述,禁用对Alluxio workers短路访问会导致更低I/O吞吐量
短路模式。 使用短路访问有两种模式
A.local
在这种模式下,如果客户端主机名与worker主机名匹配,Alluxio客户端和本地Alluxio worker就能互识。 这称为主机名自省。 在这种模式下,Alluxio客户端和本地Alluxio worker共享Alluxio worker的分层存储。
B. uuid
这是在Kubernetes中使用短路访问的默认策略
如果客户端或工作容器在使用虚拟网络,则其主机名可能不匹配。在这种情况下,请将以下属性设置为使用文件系统检查来启用短路操作,并确保客户端容器按域套接字路径挂载目录。 如果worker UUID位于客户端文件系统上,则启用短路写操作。
域套接字路径。 域套接字是一个应挂载在以下上的卷:
所有Alluxio workers
打算通过Alluxio进行读写的所有应用容器。
该域套接字卷可以是PersistentVolumeClaim
或一个hostPath Volume
。
使用PersistentVolumeClaim。 默认情况下,此域套接字卷为PersistentVolumeClaim
。 你需要为此PersistentVolumeClaim
发放一个PersistentVolume
。这个PersistentVolume
应该是local
或hostPath
。
使用hostPath卷。 您也可以直接定义workers将hostPath Volume
用于域套接字。
验证。 要验证短路读取和写入,请监控以下显示的指标
Web UI的指标Domain Socket Alluxio Read
和 Domain Socket Alluxio
Write
你应该已经安装了helm 3.X。 可以按照中的说明安装helm。
To 在Alluxio根名称空间以key-value pair方式指定所有必须属性。
The following configures 将一个持久卷本地挂载在master Pod的位置 /journal
。
'/journal'位置来配置 将一个emptyDir
卷本地挂载在master Pod的位置/journal
注意:emptyDir
卷的寿命与Pod寿命相同。 它不是持久性存储。 当Pod重新启动或被重新调度时,Alluxio日志将丢失。请仅在实验用例中使用。检查了解更详细信息。
注意:emptyDir
卷的寿命与Pod寿命相同。 它不是持久性存储。当Pod重新启动或被重新调度时,Alluxio日志将丢失。请仅在实验用例中使用。检查了解更详细信息。
注意:emptyDir
卷的寿命与Pod寿命相同。 它不是持久性存储。 当Pod重新启动或被重新调度时,Alluxio日志将丢失。请仅在实验用例中使用。检查了解更详细信息)。
Alluxio在worker Pods上管理本地存储,包括内存。 可以使用以下参考配置来设置。
支持的3 种卷类型 type
:, 和。
注意:如果在运行时创建了一个hostPath
文件或目录,只有root
用户能用。hostPath
卷没有资源大小限制。你可以使用root
权限运行Alluxio容器,或者确保存在具有UID和GID 1000 的alluxio
用户名用户可以进行访问的本地路径。可以在找到更多详细信息。
你还可以每层使用PVC并发放。对于worker分层存储,使用hostPath
或local
卷,以便worker可以在本地读写,以实现最佳性能。
注意:每一层有一个PVC。 当PVC绑定到类型为hostPath
或 local
的PV时,每个 worker Pod都将使用Node上的本地路径。本地
卷需要nodeAffinity
,并且使用此卷的Pod只能在nodeAffinity
卷规则中指定的节点上运行。可以在中找到更多详细信息。
singleMaster 意味者模板会产生一个 Alluxio master进程, multiMaster意味者 三个. embedded和ufs是两个 Alluxio 支持.
**步骤1:为HDFS连接添加hostAliases
。**Kubernetes Pods无法识别不由Kubernetes管理的网络主机名(因为不是一个Kubernetes Service),除非已经通过hostAliases定义好。 。
每个Alluxio版本发布都会有相对应的docker镜像发布在 。
您可以按照 来格式化Alluxio日志。
如果你在使用来运行Alluxio workers,并且已为Alluxio配置了持久卷,则也要清除存储。您应该删除现有并重新创建新持久卷。
你可以根据以下文档做更全面的确认 .
一旦Alluxio部署到Kubernetes上,客户端应用程序可以通过多种方式连接。对于使用的应用程序,应用程序容器可以通过挂载Alluxio FileSystem方式连接。
然后按照以下步骤用helm安装Alluxio。
注: 运行Alluxio FUSE守护程序容器必须有SYS_ADMIN
能力和securityContext.privileged = TRUE
。需要Alluxio访问权限的应用程序容器不需要此特权。 需要基于ubuntu
而不是alpine
的Docker镜像来运行FUSE守护程序。 应用程序容器可以在任何Docker镜像上运行。
或 as cluster.BytesReadDomain
和 cluster.BytesWrittenDomain
或the as Short-circuit Read (Domain Socket)
和 Alluxio Write (Domain Socket)
从alluxio V2.1及更高版本,默认alluxio Docker容器除了Fuse以外将以非root 具有UID 1000和GID 1000 的用户alluxio
身份运行。 Kubernetes 卷 只能由root写入,因此你需要相应地更新权限。