Skip to content

Commit 304ebec

Browse files
committed
docs: consolidate cache configurations
1 parent d1ef0de commit 304ebec

File tree

2 files changed

+58
-44
lines changed

2 files changed

+58
-44
lines changed

docs/zh_cn/guide/cache.md

Lines changed: 56 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,50 @@ JuiceFS 有着强大的缓存设计,阅读[社区版文档](https://juicefs.co
1111
* 如果你的集群中,所有节点均用于运行 Mount Pod,那么由于每个宿主机都持有大致相同的缓存(或者使用了分布式缓存),那么 Pod 漂移的问题可能也并不构成影响,完全可以使用宿主机路径作为缓存。
1212
* 如果用 PVC 作为缓存存储,好处是不同 JuiceFS PV 可以隔离缓存数据、分别管理,并且就算 Mount Pod 随着业务被迁移到其他节点,由于 PVC 引用关系不变,所以缓存数据仍然可以访问。
1313

14-
## 使用宿主机目录作为缓存`hostPath`) {#cache-settings}
14+
## 使用宿主机路径作为缓存`hostPath`) {#cache-settings}
1515

16-
Kubernetes 节点往往采用单独的数据盘作为缓存盘,因此使用 JuiceFS 时,一定要注意正确设置缓存路径,否则默认使用根分区的 `/var/jfsCache` 目录来缓存数据,极易耗尽磁盘空间
16+
默认情况下,CSI 驱动的缓存路径就是标准的 JuiceFS 客户端默认值 `/var/jfsCache`,考虑到 Kubernetes 节点往往采用单独的数据盘作为缓存盘,因此一定要注意正确设置缓存路径,否则使用根分区的 `/var/jfsCache` 目录来缓存数据,容易耗尽系统盘空间
1717

18-
设置缓存路径以后,Kubernetes 宿主机上的路径会以 `hostPath` 卷的形式挂载到 Mount Pod 中,因此还需要根据缓存盘参数,对缓存相关的[挂载参数](./configurations.md#mount-options)进行调整(如缓存大小)。
18+
在挂载参数中指定好 `--cache-dir`,CSI 驱动就会自动将目标路径映射到 Pod 内,比方说在 ConfigMap 中这样配置:
19+
20+
```yaml {6} title="values-mycluster.yaml"
21+
...
22+
globalConfig:
23+
enabled: true
24+
mountPodPatch:
25+
- mountOptions:
26+
- cache-dir=/data/cache
27+
- cache-size=10T
28+
```
29+
30+
那么随着 Mount Pod 启动,CSI 驱动就会为其加入对应的宿主机路径挂载:
31+
32+
```yaml {4,9}
33+
...
34+
volumeMounts:
35+
...
36+
- mountPath: /data/cache
37+
name: cachedir-0
38+
volumes:
39+
...
40+
- hostPath:
41+
path: /data/cache
42+
type: DirectoryOrCreate
43+
name: cachedir-0
44+
```
45+
46+
如果还需要进一步调整其他缓存相关的挂载参数,请阅读对应的 JuiceFS 客户端参数列表,详见[社区版](https://juicefs.com/docs/zh/community/command_reference/#mount)与[云服务](https://juicefs.com/docs/zh/cloud/reference/commands_reference/#mount)文档。
1947
2048
:::tip 注意
2149
22-
* 在 CSI 驱动中,`cache-dir` 不支持填写通配符,如果需要用多个设备作为缓存盘,填写多个目录,以 `:` 连接。详见[社区版](https://juicefs.com/docs/zh/community/command_reference/#mount)[云服务](https://juicefs.com/docs/zh/cloud/reference/commands_reference/#mount)文档
50+
* 在 CSI 驱动中,`cache-dir` 不支持填写通配符 `*`,如果需要用多个设备作为缓存盘,必须直接填写多个目录,以 `:` 连接。
2351
* 对于大量小文件写入场景,我们一般推荐临时开启客户端写缓存,但由于该模式本身带来的数据安全风险,我们尤其不推荐在 CSI 驱动中开启 `--writeback`,避免容器出现意外时,写缓存尚未完成上传,造成数据无法访问。
2452

2553
:::
2654

2755
### 使用 ConfigMap
2856

29-
阅读[「调整挂载参数」](./configurations.md#custom-cachedirs)
57+
已经在上方代码块中进行示范
3058

3159
### 在 PV 中定义(不推荐)
3260

@@ -80,20 +108,35 @@ mountOptions:
80108

81109
## 使用 PVC 作为缓存路径
82110

83-
JuiceFS CSI 驱动 0.15.1 及以上版本支持使用 PVC 作为缓存路径,该实践多用于托管 Kubernetes 集群的云服务商,让你可以使用单独的云盘来作为 CSI 驱动的缓存存储设备。
111+
如果对隔离程度有要求,或者因为其他原因而无法使用宿主机路径作为缓存目的地,那么可以使用 PVC 作为 JuiceFS 客户端缓存,但是需要注意:
84112

85-
首先,按照所使用的托管 Kubernetes 集群的云服务商的说明,创建 PVC,比如
86-
87-
* [Amazon EBS CSI 驱动](https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/ebs-csi.html)
88-
* [在 Azure Kubernetes 服务(AKS)中使用 Azure 磁盘 CSI 驱动](https://learn.microsoft.com/zh-cn/azure/aks/azure-disk-csi)
89-
* [使用 Google Compute Engine 永久性磁盘 CSI 驱动](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/gce-pd-csi-driver)
90-
* [阿里云 ACK 云盘存储卷](https://help.aliyun.com/document_detail/134767.html)
113+
- 如果使用 PVC 作为缓存路径,PVC 需要提前创建,并确保和 Mount Pod 在同一个 namespace,如果你正在使用公有云托管服务,以下是部分常用服务商的文档
114+
* [Amazon EBS CSI 驱动](https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/ebs-csi.html)
115+
* [在 Azure Kubernetes 服务(AKS)中使用 Azure 磁盘 CSI 驱动](https://learn.microsoft.com/zh-cn/azure/aks/azure-disk-csi)
116+
* [使用 Google Compute Engine 永久性磁盘 CSI 驱动](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/gce-pd-csi-driver)
117+
* [阿里云 ACK 云盘存储卷](https://help.aliyun.com/document_detail/134767.html)
118+
- 如果自定义了 Volume,确保自定义 Volume 中的 `mountPath` 和 `hostPath` 没有重复,避免冲突。
91119

92120
假设名为 `jfs-cache-pvc` 的 PVC 创建完毕,与 Mount Pod 在同一个命名空间下(默认 `kube-system`),参考下方示范,让 CSI 驱动使用该 PVC 作为缓存路径。
93121

94122
### 使用 ConfigMap
95123

96-
缓存相关配置均通过挂载参数进行调整,请阅读[「调整挂载参数」](./configurations.md#custom-cachedirs)。
124+
该功能最低需要 CSI 驱动版本 v0.25.1,修改后需重建业务 Pod 生效。如果使用了多个缓存路径,需要注意使用大小相同的存储设备,并且将 `--cache-size` 设置为可用空间之和。
125+
126+
```yaml
127+
- cacheDirs:
128+
- type: PVC
129+
name: jfs-cache-pvc
130+
- type: HostPath
131+
path: /var/jfsCache
132+
mountOptions:
133+
- cache-size=204800
134+
- free-space-ratio=0.01
135+
# 可选字段,对特定 PVC 定制缓存配置时使用
136+
pvcSelector:
137+
matchLabels:
138+
need-cachedirs: "true"
139+
```
97140

98141
### 在 PV 中定义(不推荐)
99142

docs/zh_cn/guide/configurations.md

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -361,38 +361,9 @@ stringData:
361361
configs: "{gc-secret: /root/.config/gcloud}"
362362
```
363363

364-
### 定制缓存路径 {#custom-cachedirs}
364+
### 缓存 {#custom-cachedirs}
365365

366-
本小节只介绍如何设置缓存路径,如有需要,请继续阅读[缓存](./cache.md)了解如何设置多个缓存目录,以及缓存的预热和清理。
367-
368-
在 CSI 驱动中,可以选择使用宿主机路径或者 PVC 作为 JuiceFS 客户端缓存,对于这两种场景,需要注意:
369-
370-
- 如果使用 PVC 作为缓存路径,PVC 需要提前创建,并确保和 Mount Pod 在同一个 namespace。
371-
- 如果自定义了 Volume,确保自定义 Volume 中的 `mountPath` 和 `hostPath` 没有重复,避免冲突。
372-
373-
#### 使用 ConfigMap
374-
375-
该功能最低需要 CSI 驱动版本 v0.25.1,修改后需重建业务 Pod 生效。
376-
377-
```yaml
378-
- pvcSelector:
379-
matchLabels:
380-
need-cachedirs: "true"
381-
cacheDirs:
382-
- type: PVC
383-
name: jfs-cache-pvc
384-
- type: HostPath
385-
path: /var/jfsCache
386-
```
387-
388-
#### 使用挂载参数
389-
390-
该方法只支持配置 `hostPath` 形式的缓存路径。
391-
392-
```yaml
393-
mountOptions:
394-
- cache-dir=/mnt/jfsCache1:/mnt/jfsCache2
395-
```
366+
缓存的使用还涉及资源管理、数据预热和清理等事项,因此请移步阅读[缓存](./cache.md)来详细了解。
396367

397368
### 其他功能定制
398369

0 commit comments

Comments
 (0)