使用 hostPath 限制持久卷声明内容文件夹大小

Limit persistent volume claim content folder size using hostPath

我使用 20Mi storage limits17 Mi storage requests 创建了一个持久卷声明,但我可以在 hostPath 文件夹中上传一个 50 Mi 的文件。但我想要的是限制文件夹内容的大小。如果文件夹中的内容超过 20Mi,那么 Kubernetes 应该说它不允许新文件。

持久卷:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
  namespace: limit-range
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  hostPath:
    path: /home/me/kubernetes/web
    type: DirectoryOrCreate

持久卷声明:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: pvc
    namespace: limit-range
spec:
    storageClassName: local-storage
    accessModes:
        - ReadWriteOnce
    resources:
        limits:
            storage: 20Mi
        requests:
            storage: 17Mi

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
    name: upload-preview-2
    namespace: limit-range
spec:
    selector:
        matchLabels:
            app: upload-preview-2
    template:
        metadata:
            labels:
                app: upload-preview-2
        spec:
            containers:
                - image: upload-preview:latest
                  imagePullPolicy: Never
                  name: web
                  ports:
                    - containerPort: 80
                  volumeMounts:
                    - mountPath: /var/www/html/web
                      name: localpath
                      subPath: dev

            volumes:
              - name: localpath
                persistentVolumeClaim:
                    claimName: pvc

使用该配置,它没有给我预期的结果。所以我尝试了 Limit rangeQuota,但仍然没有预期的行为。

限制范围:

apiVersion: v1 kind: LimitRange metadata:   name: storagelimits   namespace: limit-range spec:   limits:
  - type: PersistentVolumeClaim
    max:
      storage: 18Mi
    min:
      storage: 10Mi

配额:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: storagequota
  namespace: limit-range
spec:
  hard:
    persistentvolumeclaims: "5"
    requests.storage: "18Mi"

我尝试了kubectl describe quota -n limit-range,结果是:

Name:                   storagequota
Namespace:              limit-range
Resource                Used  Hard
--------                ----  ----
persistentvolumeclaims  1     5
requests.storage        17Mi  18Mi

我的想法是它可能不起作用,因为我正在使用 hostPath

emptyDir 或 hostPath 卷可以消耗多少space没有限制,容器之间或容器之间没有隔离Pods。

将来,我们希望 emptyDir 和 hostPath 卷能够使用资源规范请求一定数量的 space,并select 要使用的媒体类型,对于具有多种媒体类型的集群。

Official link for reference