JuiceFS (JFS) 在k8s中应用

Kubernetes容器存储

K8s CSI 驱动架构:

┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes 集群                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Pod 1              Pod 2           Pod 3           │   │
│  │  ┌─────────────┐    ┌─────────────┐ ┌─────────────┐ │   │
│  │  │  Container  │    │  Container  │ │  Container  │ │   │
│  │  │   /data     │    │   /data     │ │   /data     │ │   │
│  │  └──────┬──────┘    └──────┬──────┘ └──────┬──────┘ │   │
│  │         └──────────────────┼─────────────────┘       │   │
│  │                            ▼                         │   │
│  │                 ┌─────────────────────┐              │   │
│  │                 │   JuiceFS CSI       │              │   │
│  │                 │   Controller        │              │   │
│  │                 └──────────┬──────────┘              │   │
│  │                            │                         │   │
│  │                 ┌──────────┴──────────┐              │   │
│  │                 │   JuiceFS Node      │              │   │
│  │                 │   (每个节点)         │              │   │
│  │                 └──────────┬──────────┘              │   │
│  └────────────────────────────┼─────────────────────────┘   │
│                               │                             │
│                               ▼                             │
│              ┌─────────────────────────────────┐            │
│              │         JuiceFS Mount           │            │
│              │      (POSIX 文件系统)            │            │
│              └─────────────────────────────────┘            │
│                               │                             │
│                               ▼                             │
│              ┌─────────────────────────────────┐            │
│              │         对象存储                │            │
│              │     (S3/OSS/COS/MinIO)         │            │
│              └─────────────────────────────────┘            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

PVC示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: juicefs-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: juicefs-sc
resources:
requests:
storage: 100Gi
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: juicefs-sc
provisioner: csi.juicefs.com
parameters:
CSI PROVISIONER SECRET: juicefs-provisioner-secret
CSI NODE STAGE SECRET: juicefs-node-secret
CONTEXT: '{"subpath":"/"}'