feature gate local storage allocatable eviction

This commit is contained in:
David Ashpole 2017-10-11 09:53:56 -07:00
parent 175a6dee47
commit 8659676408
2 changed files with 28 additions and 22 deletions

View File

@ -1431,6 +1431,7 @@ func TestAllocatableMemoryPressure(t *testing.T) {
// TestAllocatableNodeFsPressure // TestAllocatableNodeFsPressure
func TestAllocatableNodeFsPressure(t *testing.T) { func TestAllocatableNodeFsPressure(t *testing.T) {
utilfeature.DefaultFeatureGate.Set("LocalStorageCapacityIsolation=True")
podMaker := makePodWithDiskStats podMaker := makePodWithDiskStats
summaryStatsMaker := makeDiskStats summaryStatsMaker := makeDiskStats
@ -1583,6 +1584,7 @@ func TestAllocatableNodeFsPressure(t *testing.T) {
} }
func TestNodeReclaimForAllocatableFuncs(t *testing.T) { func TestNodeReclaimForAllocatableFuncs(t *testing.T) {
utilfeature.DefaultFeatureGate.Set("LocalStorageCapacityIsolation=True")
podMaker := makePodWithDiskStats podMaker := makePodWithDiskStats
summaryStatsMaker := makeDiskStats summaryStatsMaker := makeDiskStats
podsToMake := []podToMake{ podsToMake := []podToMake{

View File

@ -27,7 +27,9 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
utilfeature "k8s.io/apiserver/pkg/util/feature"
v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos" v1qos "k8s.io/kubernetes/pkg/api/v1/helper/qos"
"k8s.io/kubernetes/pkg/features"
statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
"k8s.io/kubernetes/pkg/kubelet/cm" "k8s.io/kubernetes/pkg/kubelet/cm"
evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api"
@ -790,31 +792,33 @@ func makeSignalObservations(summaryProvider stats.SummaryProvider, capacityProvi
} }
} }
ephemeralStorageCapacity, ephemeralStorageAllocatable, exist := getResourceAllocatable(nodeCapacity, allocatableReservation, v1.ResourceEphemeralStorage) if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) {
if exist { ephemeralStorageCapacity, ephemeralStorageAllocatable, exist := getResourceAllocatable(nodeCapacity, allocatableReservation, v1.ResourceEphemeralStorage)
for _, pod := range pods { if exist {
podStat, ok := statsFunc(pod) for _, pod := range pods {
if !ok { podStat, ok := statsFunc(pod)
continue if !ok {
} continue
}
fsStatsSet := []fsStatsType{} fsStatsSet := []fsStatsType{}
if withImageFs { if withImageFs {
fsStatsSet = []fsStatsType{fsStatsLogs, fsStatsLocalVolumeSource} fsStatsSet = []fsStatsType{fsStatsLogs, fsStatsLocalVolumeSource}
} else { } else {
fsStatsSet = []fsStatsType{fsStatsRoot, fsStatsLogs, fsStatsLocalVolumeSource} fsStatsSet = []fsStatsType{fsStatsRoot, fsStatsLogs, fsStatsLocalVolumeSource}
} }
usage, err := podDiskUsage(podStat, pod, fsStatsSet) usage, err := podDiskUsage(podStat, pod, fsStatsSet)
if err != nil { if err != nil {
glog.Warningf("eviction manager: error getting pod disk usage %v", err) glog.Warningf("eviction manager: error getting pod disk usage %v", err)
continue continue
}
ephemeralStorageAllocatable.Sub(usage[resourceDisk])
}
result[evictionapi.SignalAllocatableNodeFsAvailable] = signalObservation{
available: ephemeralStorageAllocatable,
capacity: ephemeralStorageCapacity,
} }
ephemeralStorageAllocatable.Sub(usage[resourceDisk])
}
result[evictionapi.SignalAllocatableNodeFsAvailable] = signalObservation{
available: ephemeralStorageAllocatable,
capacity: ephemeralStorageCapacity,
} }
} }