Statefulset pod使用的存储空间比volumeClaimTemplates中定义的要多



我在microk8s上创建了statfulset:

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgresql13
spec:
selector:
matchLabels:
app: postgresql13
serviceName: postgresql13
replicas: 1
template:
metadata:
labels:
app: postgresql13
spec:
containers:
- name: postgresql13
image: postgres:13
imagePullPolicy: Always
ports:
- containerPort: 5432
name: sql-tcp
volumeMounts:
- name: postgresql13
mountPath: /data
env:
- name: POSTGRES_PASSWORD
value: testpassword
- name: PGDATA
value: /data/pgdata
volumeClaimTemplates:
- metadata:
name: postgresql13
spec:
storageClassName: "microk8s-hostpath"
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Ki

volumeClaimTemplates中,我只给了它1Ki(这是一个KB,对吗?)但是DB正常启动,当我在pod上运行kubectl exec postgresql13-0 -- df -h时,我得到这个

Filesystem                         Size  Used Avail Use% Mounted on
overlay                             73G   11G   59G  15% /
tmpfs                               64M     0   64M   0% /dev
/dev/mapper/ubuntu--vg-ubuntu--lv   73G   11G   59G  15% /data
shm                                 64M   16K   64M   1% /dev/shm
tmpfs                              7.7G   12K  7.7G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                              3.9G     0  3.9G   0% /proc/acpi
tmpfs                              3.9G     0  3.9G   0% /proc/scsi
tmpfs                              3.9G     0  3.9G   0% /sys/firmware

不应该使用超过PVC有什么?我故意占用了存储类AllowVolumeExpansion: False

我错过了什么?

allowVolumeExpansion和storage size不支持hostPath。实际大小为主机路径所在的主机卷大小。

不应该使用超过PVC有什么?

这是一个误解。在资源请求中指定的内容是应用程序至少需要的资源。你可能会得到更多。通常使用资源限制设置硬限制。

最新更新