JuiceFS CSI 存储
JuiceFS 是面向云原生设计的分布式文件系统,把数据存到对象存储、元数据存到 Redis/MySQL/PostgreSQL 等引擎,通过 CSI Driver 以 PVC 方式挂载到 Pod。它适合共享读写、大数据和 AI 训练场景。
核心组件:metadata engine、object storage、JuiceFS client、CSI Controller 和 CSI Node。性能关键在元数据引擎、缓存盘和对象存储带宽。
安装 CSI Driver:
helm repo add juicefs https://juicedata.github.io/charts/
helm install juicefs-csi-driver juicefs/juicefs-csi-driver \
--namespace kube-system \
--set kubeletDir=/var/lib/kubelet
创建 Secret(元数据 URL 和对象存储凭据):
kubectl create secret generic juicefs-secret \
--namespace kube-system \
--from-literal=metaurl='redis://:***@redis:6379/1' \
--from-literal=storage=s3 \
--from-literal=bucket='https://minio.storage:9000/juicefs' \
--from-literal=access-key='minio' \
--from-literal=secret-key='minio123'
创建 StorageClass:
kubectl apply -f - <<'EOF'
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: juicefs
provisioner: csi.juicefs.com
parameters:
csi.storage.k8s.io/provisioner-secret-name: juicefs-secret
csi.storage.k8s.io/provisioner-secret-namespace: kube-system
csi.storage.k8s.io/node-publish-secret-name: juicefs-secret
csi.storage.k8s.io/node-publish-secret-namespace: kube-system
reclaimPolicy: Retain
mountOptions:
- cache-dir=/var/jfsCache
- cache-size=10240
EOF
创建 PVC:
kubectl apply -f - <<'EOF'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: juicefs-pvc
namespace: demo
spec:
accessModes: [ReadWriteMany]
storageClassName: juicefs
resources:
requests:
storage: 100Gi
EOF
挂载到 Pod:
kubectl apply -f - <<'EOF'
apiVersion: v1
kind: Pod
metadata:
name: juicefs-test
namespace: demo
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "dd if=/dev/zero of=/data/test bs=1M count=100 && ls -lh /data"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: juicefs-pvc
EOF
ReadWriteMany 适合共享数据,但强一致性依赖元数据引擎。reclaimPolicy: Retain 不会删除对象存储数据,需单独清理。/dev/fuse,安全策略要放行。kubectl get pvc — 查看 PVC 状态kubectl describe pvc — 查看挂载失败原因kubectl logs -n kube-system -l app.kubernetes.io/name=juicefs-csi-driver — CSI 日志juicefs status — 查看文件系统状态juicefs bench — 基准测试