Fluid
Fluid 挂载 S3 为 PVC 以及性能测试
· ☕ 1 分钟
1. 创建 Dataset 1 2 3 4 5 6 7 8 9 10 kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: my-s3 type: Opaque stringData: aws.accessKeyId: xxx aws.secretKey: xxx EOF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 kubectl apply -f - <<EOF apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata: name: my-s3 spec: mounts: - mountPoint: s3://BUCKET/ name: s3 options: alluxio.underfs.s3.endpoint: ks3-cn-beijing-internal.ksyun.com alluxio.underfs.s3.disable.dns.buckets: "false" encryptOptions: - name: aws.accessKeyId valueFrom: secretKeyRef: name: my-s3 key: aws.accessKeyId - name: aws.secretKey valueFrom: secretKeyRef: name: my-s3 key: aws.secretKey accessModes: - ReadWriteMany EOF 2. 创建 Runtime 1 2 3 4 5 6 7 8 9

Fluid 使用 Lustre Runtime 以及性能测试
· ☕ 4 分钟
1. 分析 Fluid 挂载 NFS 存储 查看 Fuse Pod 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 kubectl get pod nfs-demo-fuse-f9wg8 -oyaml apiVersion: v1 kind: Pod metadata: generateName: nfs-demo-fuse- spec: containers: - command: - /usr/local/bin/entrypoint.sh env: - name: FLUID_RUNTIME_TYPE value: thin - name: FLUID_RUNTIME_NS value: default - name: FLUID_RUNTIME_NAME value: nfs-demo - name: MOUNT_POINT value: /runtime-mnt/thin/default/nfs-demo/thin-fuse - name: MOUNT_OPTIONS value: ro image: fluidcloudnative/nfs:v0.1 imagePullPolicy: IfNotPresent lifecycle: preStop: exec: command: - sh - -c - umount /runtime-mnt/thin/default/nfs-demo/thin-fuse name: thin-fuse securityContext: privileged: true volumeMounts:

Fluid 使用 Lustre Runtime 以及性能测试
· ☕ 3 分钟
1. 打包 Fluid Runtime 镜像 创建 fluid_config_init.py 脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/env python import json rawStr = "" with open("/etc/fluid/config.json", "r") as f: rawStr = f.readlines() rawStr = rawStr[0] script = """ #!/bin/sh set -ex MNT_FROM=$mountPoint MNT_TO=$targetPath trap "umount ${MNT_TO}" SIGTERM mkdir -p ${MNT_TO} mount -t lustre -o relatime,flock ${MNT_FROM} ${MNT_TO} sleep inf """ obj = json.loads(rawStr) with open("mount-lustre.sh", "w") as f: f.write('mountPoint="%s"\n' % obj["mounts"][0]["mountPoint"]) f.write('targetPath="%s"\n' % obj["targetPath"]) f.write(script) 只需调整一下 mount 命令即可。 创建启动脚本 entrypoint.sh 1 2 3

Fluid 使用 NFS Runtime 以及性能测试
· ☕ 3 分钟
1. 创建 Dataset 1 2 3 4 5 6 7 8 9 10 kubectl apply -f - <<EOF apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata: name: nfs-demo spec: mounts: - mountPoint: x.x.x.x:/x-x/ name: nfs-demo EOF 2. 创建 Runtime 1 2 3 4 5 6 7 8 9 10 11 12 13 14 kubectl apply -f - <<EOF apiVersion: data.fluid.io/v1alpha1 kind: ThinRuntimeProfile metadata: name: nfs spec: fileSystemType: nfs fuse: image: fluidcloudnative/nfs imageTag: v0.1 imagePullPolicy: IfNotPresent command: - "/usr/local/bin/entrypoint.sh" EOF 1 2 3 4 5 6 7 8 kubectl apply -f - <<EOF apiVersion: data.fluid.io/v1alpha1 kind: ThinRuntime metadata: name: nfs-demo spec: profileName: nfs EOF 3. 创建测试 Pod 1 2 3 4 5 6 7 8 9 10 11 12

使用 Fluid 和 JuiceFS 在 Kubernetes 管理数据
· ☕ 4 分钟
1. Fluid 简介 下面是来源于 https://github.com/fluid-cloudnative/fluid 的 Fluid 的架构图: Fluid 抽象了两个概念: Dataset,数据集合,用户视角的抽象 Runtime,数据存储、加速等真实服务的抽象 Fluid 主要解决了传统缓存系统在 Kubernetes 上使用的问题: 通过 CRD 对数据集合 Dataset 进行描述,提供生命周期管理 依赖于 Runtime 后端,