使用 hostPath 限制持久卷声明内容文件夹大小
Limit persistent volume claim content folder size using hostPath
我使用 20Mi storage limits
和 17 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 range
和 Quota
,但仍然没有预期的行为。
限制范围:
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 要使用的媒体类型,对于具有多种媒体类型的集群。
我使用 20Mi storage limits
和 17 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 range
和 Quota
,但仍然没有预期的行为。
限制范围:
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 要使用的媒体类型,对于具有多种媒体类型的集群。