1. 通过 Fluid helm chart 部署 controller。
2. 通过 kubectl 创建 Dataset 和 GooseFS runtime。
准备事项
1. 拥有腾讯云 TKE 集群。
2. 已安装 kubectl,版本 v1.18及以上。
安装步骤
1. 在 TKE 应用市场 找到 fluid 应用并单击进入应用详情。
2. 单击创建应用,在侧边窗口中输入名称、选择 TKE 集群,并在参数输入框中,将 
true
参数修改为 false
(不安装 alluxio),其他配置项可保持默认。然后单击创建。
3. 检查 controller 组件。在左侧集群中找到对应集群,在集群的工作负载中如果看到了两个 controller,则说明 fluid 组件安装成功。

操作演示
1. 集群访问授权
[root@master01 run]# export KUBECONFIG=xxx/cls-xxx-config (从tke控制台页面,下载集群凭证到某个目录)
注意
集群 API Server 需要开启外网访问权限。
2. 创建 UFS 数据集 Dataset(COS 为例)
先创建 secret.yaml 用于加密, 模板如下:
apiVersion: v1kind: Secretmetadata:name: mysecretstringData:fs.cosn.userinfo.secretKey: xxxfs.cosn.userinfo.secretId: xxx
创建secret:
[root@master01 ~]# kubectl apply -f secret.yamlsecret/mysecret created
dataset.yaml 模板如下:
apiVersion: data.fluid.io/v1alpha1kind: Datasetmetadata:name: slice1spec:mounts:- mountPoint: cosn://{your bucket}name: slice1options:fs.cosn.bucket.region: ap-beijingfs.cosn.impl: org.apache.hadoop.fs.CosFileSystemfs.AbstractFileSystem.cosn.impl: org.apache.hadoop.fs.CosNfs.cosn.userinfo.appid: "${your appid}"encryptOptions:- name: fs.cosn.userinfo.secretKeyvalueFrom:secretKeyRef:name: mysecretkey: fs.cosn.userinfo.secretKey- name: fs.cosn.userinfo.secretIdvalueFrom:secretKeyRef:name: mysecretkey: fs.cosn.userinfo.secretId
创建 dataset
[root@master01 run]# kubectl apply -f dataset.yamldataset.data.fluid.io/slice1 created
查询 Dataset 状态,处于 NotBond 状态:
[root@master01 run]# kubectl get datasetNAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGEslice1NotBound 11s
3. 创建 runtime
runtime.yaml 模板如下:
apiVersion: data.fluid.io/v1alpha1kind: GooseFSRuntimemetadata:name: slice1spec:replicas: 1data:replicas: 1goosefsVersion:imagePullPolicy: Alwaysimage: ${img_uri}imageTag: ${tag}tieredstore:levels:- mediumtype: MEMpath: /dev/shmquota: 1Gihigh: "0.95"low: "0.7"properties:# goosefs usergoosefs.user.file.writetype.default: MUST_CACHEmaster:replicas: 1journal:volumeType: hostpathjvmOptions:- "-Xmx40G"- "-XX:+UnlockExperimentalVMOptions"- "-XX:ActiveProcessorCount=8"worker:jvmOptions:- "-Xmx12G"- "-XX:+UnlockExperimentalVMOptions"- "-XX:MaxDirectMemorySize=32g"- "-XX:ActiveProcessorCount=8"resources:limits:cpu: 8fuse:imagePullPolicy: Alwaysimage: ${fuse_uri}imageTag: ${tag_num}env:MAX_IDLE_THREADS: "32"jvmOptions:- "-Xmx16G"- "-Xms16G"- "-XX:+UseG1GC"- "-XX:MaxDirectMemorySize=32g"- "-XX:+UnlockExperimentalVMOptions"- "-XX:ActiveProcessorCount=24"resources:limits:cpu: 16args:- fuse- --fuse-opts=kernel_cache,ro,max_read=131072,attr_timeout=7200,entry_timeout=7200,nonempty
创建 runtime:
[root@master01 run]# kubectl apply -f runtime.yamlgoosefsruntime.data.fluid.io/slice1 created
检查 goosefs 组件状态:
[root@master01 run]# kubectl get podsNAME READY STATUS RESTARTS AGEslice1-fuse-xsvwj 1/1 Running 0 37sslice1-master-0 2/2 Running 0 118sslice1-worker-fzpdw 2/2 Running 0 37s
4. 预热数据
dataload.yaml 预热组件如下:
apiVersion: data.fluid.io/v1alpha1kind: DataLoadmetadata:name: slice1-dataloadspec:dataset:name: slice1namespace: default
此时 Dataset 处于 Bond 状态,Cached 比例是0%。
[root@master01 run]# kubectl get datasetNAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGEslice1 97.67MiB 0.00B 4.00GiB 0.0% Bound 31m
执行数据预热:
[root@master01 run]# kubectl apply -f dataload.yamldataload.data.fluid.io/slice1-dataload created
查看数据预热进度:
[root@master01 run]# kubectl get dataset --watchNAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGEslice1 97.67MiB 52.86MiB 4.00GiB 54.1% Bound 39mslice1 97.67MiB 53.36MiB 4.00GiB 54.6% Bound 39mslice1 97.67MiB 53.36MiB 4.00GiB 54.6% Bound 39mslice1 97.67MiB 53.87MiB 4.00GiB 55.2% Bound 39mslice1 97.67MiB 53.87MiB 4.00GiB 55.2% Bound 39m
数据预热完成100%:
[root@master01 run]# kubectl get dataset --watchNAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGEslice1 97.67MiB 97.67MiB 4.00GiB 100.0% Bound 44m
5. 检查数据
[root@master01 run]# kubectl get podsNAME READY STATUS RESTARTS AGEslice1-dataload-loader-job-km6mg 0/1 Completed 0 12mslice1-fuse-xsvwj 1/1 Running 0 17mslice1-master-0 2/2 Running 0 19mslice1-worker-fzpdw 2/2 Running 0 17m
进入 goosefs master 容器:
[root@master01 run]# kubectl exec -it slice1-master-0 -- /bin/bashDefaulting container name to goosefs-master.
列出 goosefs 目录:
[root@VM-2-40-tlinux goosefs-1.0.0-SNAPSHOT-noUI-noHelm]# goosefs fs ls /slice110240 PERSISTED 06-25-2021 16:45:11:809 100% /slice1/p11 PERSISTED 05-24-2021 16:07:37:000 DIR /slice1/a10000 PERSISTED 05-26-2021 19:29:05:000 DIR /slice1/p2
查看某个具体文件:
[root@VM-2-40-tlinux goosefs-1.0.0-SNAPSHOT-noUI-noHelm]# goosefs fs ls /slice1/a/12 PERSISTED 06-25-2021 16:45:11:809 100% /slice1/a/1.xt