# 在Kubernetes集群上部署Fluid
# 前提条件
- Git
- Kubernetes集群(version >= 1.14), 并且支持CSI功能
- kubectl(version >= 1.14)
- Helm(version >= 3.0)
接下来的文档假设您已经配置好上述所有环境。
对于kubectl
的安装和配置,请参考此处 (opens new window)。
对于Helm 3的安装和配置,请参考此处 (opens new window)。
# Fluid安装步骤
# 获取Fluid Chart
您可以从Fluid Releases (opens new window)下载最新的Fluid安装包。
# 使用Helm安装Fluid
创建命名空间:
$ kubectl create ns fluid-system
安装Fluid:
$ helm install fluid fluid.tgz
NAME: fluid
LAST DEPLOYED: Fri Jul 24 16:10:18 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
helm install
命令的一般格式是helm install <RELEASE_NAME> <SOURCE>
,在上面的命令中,第一个fluid
指定了安装的release名字,这可以自行更改,第二个fluid.tgz
指定了helm chart所在路径。
# 使用Helm将Fluid更新到最新版本
如果您此前已经安装过旧版本的Fluid,可以使用Helm进行更新。 更新前,建议确保AlluxioRuntime资源对象中的各个组件已经顺利启动完成,也就是类似以下状态:
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hbase-fuse-chscz 1/1 Running 0 9h
hbase-fuse-fmhr5 1/1 Running 0 9h
hbase-master-0 2/2 Running 0 9h
hbase-worker-bdbjg 2/2 Running 0 9h
hbase-worker-rznd5 2/2 Running 0 9h
由于helm upgrade不会更新CRD,需要先对其手动进行更新:
$ tar zxvf fluid-0.5.0.tgz ./
$ kubectl apply -f fluid/crds/.
更新:
$ helm upgrade fluid fluid/
Release "fluid" has been upgraded. Happy Helming!
NAME: fluid
LAST DEPLOYED: Fri Mar 12 09:22:32 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
此时,旧版本的controller不会自动结束,新版本的controller会停留在Pending状态:
$ kubectl -n fluid-system get pods
NAME READY STATUS RESTARTS AGE
alluxioruntime-controller-56687869f6-g9l9n 0/1 Pending 0 96s
alluxioruntime-controller-5b64fdbbb-j9h6r 1/1 Running 0 3m55s
csi-nodeplugin-fluid-r6crn 2/2 Running 0 94s
csi-nodeplugin-fluid-wvhdn 2/2 Running 0 87s
dataset-controller-5b7848dbbb-rjkl9 1/1 Running 0 3m55s
dataset-controller-64bf45c497-w8ncb 0/1 Pending 0 96s
手动进行删除:
$ kubectl -n fluid-system delete pod alluxioruntime-controller-5b64fdbbb-j9h6r
$ kubectl -n fluid-system delete pod dataset-controller-5b7848dbbb-rjkl9
建议您从v0.3和v0.4升级。如果您安装的是更旧版本的Fluid,建议重新进行安装。
# 检查各组件状态
查看Fluid使用的CRD:
$ kubectl get crd | grep data.fluid.io
alluxiodataloads.data.fluid.io 2021-03-12T00:00:47Z
alluxioruntimes.data.fluid.io 2021-03-12T00:00:47Z
databackups.data.fluid.io 2021-03-12T00:03:45Z
dataloads.data.fluid.io 2021-03-12T00:00:47Z
datasets.data.fluid.io 2021-03-12T00:00:47Z
jindoruntimes.data.fluid.io 2021-03-12T00:03:45Z
查看各Pod的状态:
$ kubectl get pod -n fluid-system
NAME READY STATUS RESTARTS AGE
alluxioruntime-controller-5dfb5c7966-mkgzb 1/1 Running 0 2d1h
csi-nodeplugin-fluid-64h69 2/2 Running 0 2d1h
csi-nodeplugin-fluid-tc7fx 2/2 Running 0 2d1h
dataset-controller-7c4bc68b96-26mcb 1/1 Running 0 2d1h
如果Pod状态如上所示,那么Fluid就可以正常使用了!
查看各Pod内程序的版本:
csi-nodeplugin、alluxioruntime-controller、dataset-controller在启动时,会将自身的版本信息打印到日志中。
如果您使用我们提供的charts进行安装,它们的版本应该是完全一致的。
如果您是手动安装部署,它们的版本可能不完全一致,可以分别依次查看:
$ kubectl logs csi-nodeplugin-fluid-tc7fx -c plugins -n fluid-system | head -n 9 | tail -n 6
$ kubectl logs alluxioruntime-controller-5dfb5c7966-mkgzb -n fluid-system | head -n 6
$ kubectl logs dataset-controller-7c4bc68b96-26mcb -n fluid-system | head -n 6
打印出的日志如下格式:
2020/10/27 10:16:02 BuildDate: 2020-10-26_14:04:22
2020/10/27 10:16:02 GitCommit: f2c3a3fa1335cb0384e565f17a4f3284a6507cef
2020/10/27 10:16:02 GitTreeState: dirty
2020/10/27 10:16:02 GoVersion: go1.14.2
2020/10/27 10:16:02 Compiler: gc
2020/10/27 10:16:02 Platform: linux/amd64
若Pod打印的日志已经被清理掉,可以执行下列命令查看版本:
$ kubectl exec csi-nodeplugin-fluid-tc7fx -c plugins fluid-csi version -n fluid-system
$ kubectl exec alluxioruntime-controller-5dfb5c7966-mkgzb alluxioruntime-controller version -n fluid-system
$ kubectl exec dataset-controller-7c4bc68b96-26mcb dataset-controller version -n fluid-system
# Fluid使用示例
有关Fluid的使用示例,可以参考我们提供的示例文档:
# 卸载Fluid
为了安全的卸载fluid,在卸载前,首先需要检查fluid相关的自定义资源对象是否已被清除:
kubectl get crds -o custom-columns=NAME:.metadata.name | grep data.fluid.io | sed ':t;N;s/\n/,/;b t' | xargs kubectl get --all-namespaces
如果确认已经删除所有资源对象,则可以安全卸载fluid:
$ helm delete fluid
$ kubectl delete -f fluid/crds
$ kubectl delete ns fluid-system
helm delete
命令中的fluid
对应安装时指定的<RELEASE_NAME>。
# 高级配置
在一些特定的云厂商实现下, 默认mount根目录/runtime-mnt
是不可写的,因此需要修改目录位置
helm install fluid --set runtime.mountRoot=/var/lib/docker/runtime-mnt fluid
← Fluid 快速上手 Fluid问题诊断 →