最近更新时间:2025-01-03 14:39:10
KPFS支持多种缓存机制来降低访问时延和提高吞吐量,包括本地缓存和分布式缓存。本文介绍如何在CSI Driver中使用缓存相关功能。
在开始阅读本文前,您需要先了解CSI存储卷的使用流程。
在CSI Driver中,您可以使用宿主机路径(hostPath
)作为KPFS客户端缓存,该方式简单易用,缓存数据会落在Kubetnetes节点的本地数据盘。
在使用时,一定要注意正确设置缓存路径,否则默认使用根分区的 /var/jfsCache
目录来缓存数据,极易耗尽磁盘空间。在设置缓存路径后,Kuberenetes宿主机上的路径会以hostPath
卷的形式挂载到Mount Pod(KPFS客户端运行在Mount Pod中,Mount Pod是每个节点内的应用Pod读写KPFS的通道)中,您还需要根据缓存盘参数,对缓存相关的挂载参数进行调整。
静态配置下,在PV中定义。
apiVersion: v1
kind: PersistentVolume
metadata:
name: juicefs-pv
labels:
juicefs-name: ten-pb-fs
spec:
capacity:
storage: 10Pi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
# 定义缓存相关参数
mountOptions:
- cache-dir=/dev/vdb1
- cache-size=204800
csi:
driver: csi.juicefs.com
volumeHandle: juicefs-pv
fsType: juicefs
nodePublishSecretRef:
name: juicefs-secret
namespace: default
动态配置下,在StorageClass中定义。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: juicefs-sc
provisioner: csi.juicefs.com
parameters:
csi.storage.k8s.io/provisioner-secret-name: juicefs-secret
csi.storage.k8s.io/provisioner-secret-namespace: default
csi.storage.k8s.io/node-publish-secret-name: juicefs-secret
csi.storage.k8s.io/node-publish-secret-namespace: default
# 定义缓存相关参数
mountOptions:
- cache-dir=/dev/vdb1
- cache-size=204800
注意
cache-dir
不支持填写通配符,如果需要用多个设备作为缓存盘,填写多个目录,以:
连接。由于Mount Pod可能会随着业务Pod被分配到其它节点,如果发生这种情况,缓存就会失效。
如果您的Kuberenetes集群中,所有节点均用于运行Mount Pod,那么由于每个宿主机都持有大致相同的缓存,那么Pod漂移的问题可能并不构成影响,完全可以使用宿主机路径作为缓存;否则,建议采取在容器环境中部署独立缓存集群的方案,以优化缓存利用率。
纯净模式