scheduler: add pod Overhead support for requests
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
This commit is contained in:
@@ -26,6 +26,9 @@ import (
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
)
|
||||
|
||||
func TestNewResource(t *testing.T) {
|
||||
@@ -540,6 +543,9 @@ func TestNodeInfoClone(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestNodeInfoAddPod(t *testing.T) {
|
||||
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)()
|
||||
|
||||
nodeName := "test-node"
|
||||
pods := []*v1.Pod{
|
||||
{
|
||||
@@ -567,6 +573,9 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -580,8 +589,7 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
{
|
||||
Resources: v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("200m"),
|
||||
v1.ResourceMemory: resource.MustParse("1Ki"),
|
||||
v1.ResourceCPU: resource.MustParse("200m"),
|
||||
},
|
||||
},
|
||||
Ports: []v1.ContainerPort{
|
||||
@@ -594,6 +602,10 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -604,15 +616,15 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
requestedResource: &Resource{
|
||||
MilliCPU: 300,
|
||||
Memory: 1524,
|
||||
MilliCPU: 1300,
|
||||
Memory: 1000,
|
||||
EphemeralStorage: 0,
|
||||
AllowedPodNumber: 0,
|
||||
ScalarResources: map[v1.ResourceName]int64(nil),
|
||||
},
|
||||
nonzeroRequest: &Resource{
|
||||
MilliCPU: 300,
|
||||
Memory: 1524,
|
||||
MilliCPU: 1300,
|
||||
Memory: 209716200, //200MB + 1000 specified in requests/overhead
|
||||
EphemeralStorage: 0,
|
||||
AllowedPodNumber: 0,
|
||||
ScalarResources: map[v1.ResourceName]int64(nil),
|
||||
@@ -653,6 +665,9 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -666,8 +681,7 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
{
|
||||
Resources: v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("200m"),
|
||||
v1.ResourceMemory: resource.MustParse("1Ki"),
|
||||
v1.ResourceCPU: resource.MustParse("200m"),
|
||||
},
|
||||
},
|
||||
Ports: []v1.ContainerPort{
|
||||
@@ -680,6 +694,10 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -702,12 +720,23 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestNodeInfoRemovePod(t *testing.T) {
|
||||
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)()
|
||||
|
||||
nodeName := "test-node"
|
||||
pods := []*v1.Pod{
|
||||
makeBasePod(t, nodeName, "test-1", "100m", "500", "", []v1.ContainerPort{{HostIP: "127.0.0.1", HostPort: 80, Protocol: "TCP"}}),
|
||||
makeBasePod(t, nodeName, "test-2", "200m", "1Ki", "", []v1.ContainerPort{{HostIP: "127.0.0.1", HostPort: 8080, Protocol: "TCP"}}),
|
||||
}
|
||||
|
||||
// add pod Overhead
|
||||
for _, pod := range pods {
|
||||
pod.Spec.Overhead = v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
}
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
pod *v1.Pod
|
||||
errExpected bool
|
||||
@@ -723,15 +752,15 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
requestedResource: &Resource{
|
||||
MilliCPU: 300,
|
||||
Memory: 1524,
|
||||
MilliCPU: 1300,
|
||||
Memory: 2524,
|
||||
EphemeralStorage: 0,
|
||||
AllowedPodNumber: 0,
|
||||
ScalarResources: map[v1.ResourceName]int64(nil),
|
||||
},
|
||||
nonzeroRequest: &Resource{
|
||||
MilliCPU: 300,
|
||||
Memory: 1524,
|
||||
MilliCPU: 1300,
|
||||
Memory: 2524,
|
||||
EphemeralStorage: 0,
|
||||
AllowedPodNumber: 0,
|
||||
ScalarResources: map[v1.ResourceName]int64(nil),
|
||||
@@ -772,6 +801,10 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -799,6 +832,10 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -830,6 +867,10 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
},
|
||||
},
|
||||
},
|
||||
errExpected: false,
|
||||
@@ -840,15 +881,15 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
requestedResource: &Resource{
|
||||
MilliCPU: 200,
|
||||
Memory: 1024,
|
||||
MilliCPU: 700,
|
||||
Memory: 1524,
|
||||
EphemeralStorage: 0,
|
||||
AllowedPodNumber: 0,
|
||||
ScalarResources: map[v1.ResourceName]int64(nil),
|
||||
},
|
||||
nonzeroRequest: &Resource{
|
||||
MilliCPU: 200,
|
||||
Memory: 1024,
|
||||
MilliCPU: 700,
|
||||
Memory: 1524,
|
||||
EphemeralStorage: 0,
|
||||
AllowedPodNumber: 0,
|
||||
ScalarResources: map[v1.ResourceName]int64(nil),
|
||||
@@ -888,6 +929,10 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
NodeName: nodeName,
|
||||
Overhead: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("500"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
Reference in New Issue
Block a user