我们正在使用 NFS 卷(1TB 大小的 GCP 文件存储)来设置 RWX GCP 中的许多访问 PVC,这里的问题是:例如我分配了一个 5Gi 的 PVC 并将其挂载到 /etc/nginx/test-pvc 下的 nginx pod ,而不是仅仅分配 5Gi,它分配了整个 NFS 卷大小。
我登录到 nginx pod 并执行了 df -kh:
df -kh
Filesystem Size Used Avail Use% Mounted on
overlay 95G 16G 79G 17% /
tmpfs 64M 0 64M 0% /dev
tmpfs 63G 0 63G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sda1 95G 16G 79G 17% /etc/hosts
10.x.10.x:/vol 1007G 5.0M 956G 1% /etc/nginx/test-pvc
tmpfs 63G 12K 63G 1% /run/secrets/kubernetes.io/serviceaccount
tmpfs 63G 0 63G 0% /proc/acpi
tmpfs 63G 0 63G 0% /proc/scsi
tmpfs 63G 0 63G 0% /sys/firmware
/etc/nginx/test-pvc 的大小是 1007G,这是我在 NFS 中的整个卷大小(1 TB),它应该是 5G,甚至在 /etc/nginx/test 中实际上并没有使用 5MB 的已用空间-PVC。为什么会有这样的行为?
使用的 PV 和 PVC yaml:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-test
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
path: /vol
server: 10.x.10.x
persistentVolumeReclaimPolicy: Recycle
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-claim1
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
resources:
requests:
storage: 5Gi
volumeName: pv-nfs-test
Nginx 部署 yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-pv-demo-depl
spec:
replicas: 1
selector:
matchLabels:
app: nfs-pv-demo
template:
metadata:
name: nfs-pv-pod
labels:
app: nfs-pv-demo
spec:
containers:
- image: nginx
name: nfs-pv-multi
imagePullPolicy: Always
name: ng
volumeMounts:
- name: nfs-volume-1
mountPath: "/etc/nginx/test-pvc"
volumes:
- name: nfs-volume-1
persistentVolumeClaim:
claimName: nfs-claim1
有什么我想念的吗?或者这是 NFS 的行为?如果是这样,那么在生产中处理它的最佳方法是什么,因为我们将有多个其他 PVC,并可能导致一些混乱和批量拒绝问题。