Record size of volume in desired and actual state of the world

This commit is contained in:
Hemant Kumar 2022-02-17 14:47:52 -05:00
parent 16fe367389
commit 6eea80ec97
2 changed files with 17 additions and 1 deletions

View File

@ -25,6 +25,7 @@ import (
"sync"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/types"
"k8s.io/klog/v2"
"k8s.io/kubernetes/pkg/volume"
@ -284,6 +285,9 @@ type attachedVolume struct {
// volumeInUseErrorForExpansion indicates volume driver has previously returned volume-in-use error
// for this volume and volume expansion on this node should not be retried
volumeInUseErrorForExpansion bool
// persistentVolumeSize records size of the volume when pod was started.
persistentVolumeSize resource.Quantity
}
// The mountedPod object represents a pod for which the kubelet volume manager

View File

@ -186,6 +186,9 @@ type volumeToMount struct {
// desiredSizeLimit indicates the desired upper bound on the size of the volume
// (if so implemented)
desiredSizeLimit *resource.Quantity
// persistentVolumeSize records desired size of a persistent volume.
persistentVolumeSize resource.Quantity
}
// The pod object represents a pod that references the underlying volume and
@ -274,7 +277,7 @@ func (dsw *desiredStateOfWorld) AddPodToVolume(
}
}
}
dsw.volumesToMount[volumeName] = volumeToMount{
vmt := volumeToMount{
volumeName: volumeName,
podsToMount: make(map[types.UniquePodName]podToMount),
pluginIsAttachable: attachable,
@ -283,6 +286,15 @@ func (dsw *desiredStateOfWorld) AddPodToVolume(
reportedInUse: false,
desiredSizeLimit: sizeLimit,
}
// record desired size of the volume
if volumeSpec.PersistentVolume != nil {
pvCap := volumeSpec.PersistentVolume.Spec.Capacity.Storage()
if pvCap != nil {
vmt.persistentVolumeSize = *pvCap
}
}
dsw.volumesToMount[volumeName] = vmt
}
oldPodMount, ok := dsw.volumesToMount[volumeName].podsToMount[podName]
mountRequestTime := time.Now()