Add unit tests showing the effect of unlimited containers when calculating pod limits.

This behavior is surprising to some users (see kubectl issues #1110 and #1385), who expect that an unlimited container will result in an unlimited pod, but that is not how PodLimits() works, as it ignores any containers that do not specify limits when calculating the pod limits.

This commit adds unit tests that confirm this behavior.
This commit is contained in:
Brian Pursley 2023-04-08 18:55:45 -04:00
parent ad18954259
commit b04ca79445

View File

@ -984,6 +984,67 @@ func TestPodResourceLimits(t *testing.T) {
}, },
}, },
}, },
{
description: "no limited containers should result in no limits for the pod",
expectedLimits: v1.ResourceList{},
initContainers: []v1.Container{},
containers: []v1.Container{
{
// Unlimited container
},
},
},
{
description: "one limited and one unlimited container should result in the limited container's limits for the pod",
expectedLimits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("2"),
v1.ResourceMemory: resource.MustParse("2Gi"),
},
initContainers: []v1.Container{},
containers: []v1.Container{
{
Resources: v1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("2"),
v1.ResourceMemory: resource.MustParse("2Gi"),
},
},
},
{
// Unlimited container
},
},
},
{
description: "one limited and one unlimited init container should result in the limited init container's limits for the pod",
expectedLimits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("2"),
v1.ResourceMemory: resource.MustParse("2Gi"),
},
initContainers: []v1.Container{
{
Resources: v1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("2"),
v1.ResourceMemory: resource.MustParse("2Gi"),
},
},
},
{
// Unlimited init container
},
},
containers: []v1.Container{
{
Resources: v1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("1"),
v1.ResourceMemory: resource.MustParse("1Gi"),
},
},
},
},
},
} }
for _, tc := range testCases { for _, tc := range testCases {
p := &v1.Pod{ p := &v1.Pod{