Commit 5ff8829b authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #34503 from derekwaynecarr/fix-qos

Automatic merge from submit-queue Fix edge case in qos evaluation If a pod has a container C1 and C2, where sum(C1.requests, C2.requests) equals (C1.Limits), the code was reporting that the pod had "Guaranteed" qos, when it should have been Burstable. /cc @vishh @dchen1107
parents e9ecbd9c aeed9cab
......@@ -68,11 +68,13 @@ func GetPodQOS(pod *api.Pod) QOSClass {
}
}
// process limits
qosLimitsFound := sets.NewString()
for name, quantity := range container.Resources.Limits {
if !supportedQoSComputeResources.Has(string(name)) {
continue
}
if quantity.Cmp(zeroQuantity) == 1 {
qosLimitsFound.Insert(string(name))
delta := quantity.Copy()
if _, exists := limits[name]; !exists {
limits[name] = *delta
......@@ -82,7 +84,8 @@ func GetPodQOS(pod *api.Pod) QOSClass {
}
}
}
if len(limits) != len(supportedQoSComputeResources) {
if len(qosLimitsFound) != len(supportedQoSComputeResources) {
isGuaranteed = false
}
}
......
......@@ -136,6 +136,12 @@ func TestGetPodQOS(t *testing.T) {
expected: Burstable,
},
{
pod: newPod("burstable-no-limits", []api.Container{
newContainer("burstable", getResourceList("100m", "100Mi"), getResourceList("", "")),
}),
expected: Burstable,
},
{
pod: newPod("burstable-guaranteed", []api.Container{
newContainer("burstable", getResourceList("1", "100Mi"), getResourceList("2", "100Mi")),
newContainer("guaranteed", getResourceList("100m", "100Mi"), getResourceList("100m", "100Mi")),
......@@ -143,6 +149,13 @@ func TestGetPodQOS(t *testing.T) {
expected: Burstable,
},
{
pod: newPod("burstable-unbounded-but-requests-match-limits", []api.Container{
newContainer("burstable", getResourceList("100m", "100Mi"), getResourceList("200m", "200Mi")),
newContainer("burstable-unbounded", getResourceList("100m", "100Mi"), getResourceList("", "")),
}),
expected: Burstable,
},
{
pod: newPod("burstable-1", []api.Container{
newContainer("burstable", getResourceList("10m", "100Mi"), getResourceList("100m", "200Mi")),
}),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment