全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

在容器环境中使用缓存

最近更新时间: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

注意

  1. cache-dir 不支持填写通配符,如果需要用多个设备作为缓存盘,填写多个目录,以 : 连接。

  2. 由于Mount Pod可能会随着业务Pod被分配到其它节点,如果发生这种情况,缓存就会失效。

  3. 如果您的Kuberenetes集群中,所有节点均用于运行Mount Pod,那么由于每个宿主机都持有大致相同的缓存,那么Pod漂移的问题可能并不构成影响,完全可以使用宿主机路径作为缓存;否则,建议采取在容器环境中部署独立缓存集群的方案,以优化缓存利用率。

纯净模式常规模式

纯净模式

点击可全屏预览文档内容