mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 07:20:13 +00:00
Merge pull request #103107 from pacoxu/fix-93300
ResourceConfigForPod: check initContainers as other QoS func
This commit is contained in:
commit
a9aad7e034
@ -156,6 +156,21 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, container := range pod.Spec.InitContainers {
|
||||||
|
if container.Resources.Limits.Cpu().IsZero() {
|
||||||
|
cpuLimitsDeclared = false
|
||||||
|
}
|
||||||
|
if container.Resources.Limits.Memory().IsZero() {
|
||||||
|
memoryLimitsDeclared = false
|
||||||
|
}
|
||||||
|
containerHugePageLimits := HugePageLimits(container.Resources.Requests)
|
||||||
|
for k, v := range containerHugePageLimits {
|
||||||
|
if value, exists := hugePageLimits[k]; !exists || v > value {
|
||||||
|
hugePageLimits[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// quota is not capped when cfs quota is disabled
|
// quota is not capped when cfs quota is disabled
|
||||||
if !enforceCPULimits {
|
if !enforceCPULimits {
|
||||||
cpuQuota = int64(-1)
|
cpuQuota = int64(-1)
|
||||||
|
@ -248,6 +248,31 @@ func TestResourceConfigForPod(t *testing.T) {
|
|||||||
quotaPeriod: tunedQuotaPeriod,
|
quotaPeriod: tunedQuotaPeriod,
|
||||||
expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory},
|
expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory},
|
||||||
},
|
},
|
||||||
|
"burstable-partial-limits-with-init-containers": {
|
||||||
|
pod: &v1.Pod{
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{
|
||||||
|
{
|
||||||
|
Resources: getResourceRequirements(getResourceList("100m", "100m"), getResourceList("100m", "100Mi")),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Resources: getResourceRequirements(getResourceList("100m", "100m"), getResourceList("", "")),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
InitContainers: []v1.Container{
|
||||||
|
{
|
||||||
|
Resources: getResourceRequirements(getResourceList("100m", "100m"), getResourceList("100m", "100Mi")),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Resources: getResourceRequirements(getResourceList("100m", "100m"), getResourceList("", "")),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
enforceCPULimits: true,
|
||||||
|
quotaPeriod: tunedQuotaPeriod,
|
||||||
|
expected: &ResourceConfig{CpuShares: &burstablePartialShares},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for testName, testCase := range testCases {
|
for testName, testCase := range testCases {
|
||||||
@ -255,16 +280,16 @@ func TestResourceConfigForPod(t *testing.T) {
|
|||||||
actual := ResourceConfigForPod(testCase.pod, testCase.enforceCPULimits, testCase.quotaPeriod, false)
|
actual := ResourceConfigForPod(testCase.pod, testCase.enforceCPULimits, testCase.quotaPeriod, false)
|
||||||
|
|
||||||
if !reflect.DeepEqual(actual.CpuPeriod, testCase.expected.CpuPeriod) {
|
if !reflect.DeepEqual(actual.CpuPeriod, testCase.expected.CpuPeriod) {
|
||||||
t.Errorf("unexpected result, test: %v, cpu period not as expected", testName)
|
t.Errorf("unexpected result, test: %v, cpu period not as expected. Expected: %v, Actual:%v", testName, *testCase.expected.CpuPeriod, *actual.CpuPeriod)
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(actual.CpuQuota, testCase.expected.CpuQuota) {
|
if !reflect.DeepEqual(actual.CpuQuota, testCase.expected.CpuQuota) {
|
||||||
t.Errorf("unexpected result, test: %v, cpu quota not as expected", testName)
|
t.Errorf("unexpected result, test: %v, cpu quota not as expected. Expected: %v, Actual:%v", testName, *testCase.expected.CpuQuota, *actual.CpuQuota)
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(actual.CpuShares, testCase.expected.CpuShares) {
|
if !reflect.DeepEqual(actual.CpuShares, testCase.expected.CpuShares) {
|
||||||
t.Errorf("unexpected result, test: %v, cpu shares not as expected", testName)
|
t.Errorf("unexpected result, test: %v, cpu shares not as expected. Expected: %v, Actual:%v", testName, *testCase.expected.CpuShares, &actual.CpuShares)
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(actual.Memory, testCase.expected.Memory) {
|
if !reflect.DeepEqual(actual.Memory, testCase.expected.Memory) {
|
||||||
t.Errorf("unexpected result, test: %v, memory not as expected", testName)
|
t.Errorf("unexpected result, test: %v, memory not as expected. Expected: %v, Actual:%v", testName, *testCase.expected.Memory, *actual.Memory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user