You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对PV/PVC设置存储使用硬限制?

如何对PV/PVC设置实际存储使用的硬限制?

场景回顾

  • 同一节点上两个Deployment,各使用独立PV/PVC:Pod1申请10Gi,Pod2申请15Gi
  • 节点预留的存储卷可用空间为25Gi
  • StorageClass由Rancher提供,PV的volumeMode为Filesystem

需求:限制Pod1最多使用10Gi持久卷空间,超量时允许Pod被驱逐


可行解决方案

1. 借助Rancher存储供应方的动态配额配置

如果使用Rancher自带的存储插件(比如Local Path Provisioner),可以在StorageClass中配置参数,让动态创建的PV自动带上文件系统级别的容量限制:

  • 编辑StorageClass,在parameters中添加存储配额相关参数,例如针对Local Path Provisioner:
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: rancher-local-path
    provisioner: rancher.io/local-path
    parameters:
      sizeLimit: "10Gi"  # 对应PVC申请的容量,动态创建PV时自动设置配额
    volumeBindingMode: WaitForFirstConsumer
    
  • 原理:存储供应方会在创建PV时对底层文件系统设置配额,当Pod写入超量时,会触发文件系统空间不足错误,进而导致Pod被驱逐(取决于应用的错误处理逻辑)。

2. 手动配置文件系统组配额

针对已存在的PV,可以直接在节点的存储卷上配置用户组配额:

  1. 找到PV在节点上的挂载路径:通常位于/var/lib/kubelet/pods/<Pod-ID>/volumes/kubernetes.io~<存储类型>/<PV名称>
  2. 确保底层文件系统已启用配额功能:
    • 对于ext4:挂载时添加usrquota,grpquota参数(需重新挂载存储卷)
    • 对于xfs:启用项目配额(需执行xfs_quota -x -c 'project -s <项目ID>')
  3. 给Pod的fsGroup设置配额:
    • 先在Pod的spec.securityContext中指定fsGroup,例如:
      securityContext:
        fsGroup: 1000
      
    • 在节点的PV挂载点执行配额设置命令:
      setquota -g 1000 10737418240 10737418240 /path/to/pv/mount
      
      (注:10737418240字节等于10Gi,软限制和硬限制设为相同值)
  • 效果:Pod以指定组身份写入数据时,超过配额会被阻止,写入失败可能导致Pod重启或被驱逐。

3. 利用CSI驱动的容量限制功能

如果Rancher使用的存储插件基于CSI实现且支持容量监控,可以通过PVC的resources.limits.storage配置强制限制:

  • 编辑PVC,添加存储限制:
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pod1-pvc
    spec:
      resources:
        requests:
          storage: 10Gi
        limits:
          storage: 10Gi  # 设置硬限制
      storageClassName: rancher-csi-storage
      accessModes:
        - ReadWriteOnce
    
  • 注意:该功能需要CSI驱动本身支持,需确认Rancher对应的存储插件是否具备此能力。

关键注意事项

  • 不同存储供应方的实现逻辑不同,需参考Rancher对应存储插件的官方文档;
  • 文件系统级别的配额是最可靠的硬限制方式,不受Pod重启或重建影响;
  • 手动配置配额时,需避免影响节点上其他PV的正常使用。

内容的提问来源于stack exchange,提问作者bulmust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:20:54