hostPath PersistentVolume和spec.capacity.storage属性

时间:2019-04-10 18:47:15

标签: kubernetes persistent-volumes

我正在使用hostPath作为已部署的Postgres数据库的持久卷,在虚拟机中运行单个主/节点Kubernetes。

我的PersistentVolume具有以下配置:

apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    volume.beta.kubernetes.io/storage-class: postgres
  labels:
    type: local
  name: postgres-storage
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/postgres

此外,我目前有一个PersistentVolumeClaim绑定到该卷,要求所有容量(spec.resources.requests.storage: 1Gi )。

最近,Postgres数据库的大小超过了spec.capacity.storage,但是没有引起任何问题:

$ du -hs /data/postgres # Powers of 1024
1.2G    /data/postgres 

$ du -hs /data/postgres --si # Powers of 1000
1.3G    /data/postgres 

我的问题是:

  • 使用hostPathspec.capacity.storage确实很重要 卷,或者该卷实际上受基础分区的限制 大小?
  • 当卷使用量超过其capacity时会发生什么? (即Kubernetes将如何处理此问题)

1 个答案:

答案 0 :(得分:1)

根据Kubernetes GitHub页面上的@ wongma7:

  

这按预期工作,kube无法/不会强制执行   PV,PV上的容量字段只是一个标签。取决于   “管理员”(即PV的创建者)对其进行准确标记   当用户创建需要> = X Gi的PVC时,他们得到的是   想要。

您可以找到原始讨论here

此外,官方Volume/Resources文档中也介绍了该内容:

  

emptyDirhostPath卷可以容纳多少空间没有限制   ,并且容器之间或容器之间没有隔离。

     

将来,我们预计emptyDir和hostPath卷将是   能够使用资源请求一定数量的空间   规范,并选择要用于集群的媒体类型   有几种媒体类型。