diff --git a/pkg/kubelet/cm/topologymanager/topology_manager.go b/pkg/kubelet/cm/topologymanager/topology_manager.go index 3b1718ef114..e8cb592fac5 100644 --- a/pkg/kubelet/cm/topologymanager/topology_manager.go +++ b/pkg/kubelet/cm/topologymanager/topology_manager.go @@ -323,23 +323,17 @@ func (m *manager) Admit(attrs *lifecycle.PodAdmitAttributes) lifecycle.PodAdmitR } pod := attrs.Pod c := make(map[string]TopologyHint) - klog.Infof("[topologymanager] Pod QoS Level: %v", pod.Status.QOSClass) - if pod.Status.QOSClass == v1.PodQOSGuaranteed { - for _, container := range append(pod.Spec.InitContainers, pod.Spec.Containers...) { - result := m.calculateAffinity(*pod, container) - admitPod := m.policy.CanAdmitPodResult(&result) - if !admitPod.Admit { - return admitPod - } - c[container.Name] = result + for _, container := range append(pod.Spec.InitContainers, pod.Spec.Containers...) { + result := m.calculateAffinity(*pod, container) + admitPod := m.policy.CanAdmitPodResult(&result) + if !admitPod.Admit { + return admitPod } - m.podTopologyHints[string(pod.UID)] = c - klog.Infof("[topologymanager] Topology Affinity for Pod: %v are %v", pod.UID, m.podTopologyHints[string(pod.UID)]) - - } else { - klog.Infof("[topologymanager] Topology Manager only affinitises Guaranteed pods.") + c[container.Name] = result } + m.podTopologyHints[string(pod.UID)] = c + klog.Infof("[topologymanager] Topology Affinity for Pod: %v are %v", pod.UID, m.podTopologyHints[string(pod.UID)]) return lifecycle.PodAdmitResult{ Admit: true, diff --git a/pkg/kubelet/cm/topologymanager/topology_manager_test.go b/pkg/kubelet/cm/topologymanager/topology_manager_test.go index 826c89c2765..4d6e7d85e0e 100644 --- a/pkg/kubelet/cm/topologymanager/topology_manager_test.go +++ b/pkg/kubelet/cm/topologymanager/topology_manager_test.go @@ -905,6 +905,32 @@ func TestAdmit(t *testing.T) { }, expected: true, }, + { + name: "QOSClass set as Burstable. BestEffort Policy. More than one Preferred Affinity.", + qosClass: v1.PodQOSBurstable, + policy: NewBestEffortPolicy(), + hp: []HintProvider{ + &mockHintProvider{ + map[string][]TopologyHint{ + "resource": { + { + NUMANodeAffinity: NewTestBitMask(0), + Preferred: true, + }, + { + NUMANodeAffinity: NewTestBitMask(1), + Preferred: true, + }, + { + NUMANodeAffinity: NewTestBitMask(0, 1), + Preferred: false, + }, + }, + }, + }, + }, + expected: true, + }, { name: "QOSClass set as Guaranteed. BestEffort Policy. No Preferred Affinity.", qosClass: v1.PodQOSGuaranteed, @@ -945,6 +971,28 @@ func TestAdmit(t *testing.T) { }, expected: true, }, + { + name: "QOSClass set as Burstable. Restricted Policy. Preferred Affinity.", + qosClass: v1.PodQOSBurstable, + policy: NewRestrictedPolicy(), + hp: []HintProvider{ + &mockHintProvider{ + map[string][]TopologyHint{ + "resource": { + { + NUMANodeAffinity: NewTestBitMask(0), + Preferred: true, + }, + { + NUMANodeAffinity: NewTestBitMask(0, 1), + Preferred: false, + }, + }, + }, + }, + }, + expected: true, + }, { name: "QOSClass set as Guaranteed. Restricted Policy. More than one Preferred affinity.", qosClass: v1.PodQOSGuaranteed, @@ -971,6 +1019,32 @@ func TestAdmit(t *testing.T) { }, expected: true, }, + { + name: "QOSClass set as Burstable. Restricted Policy. More than one Preferred affinity.", + qosClass: v1.PodQOSBurstable, + policy: NewRestrictedPolicy(), + hp: []HintProvider{ + &mockHintProvider{ + map[string][]TopologyHint{ + "resource": { + { + NUMANodeAffinity: NewTestBitMask(0), + Preferred: true, + }, + { + NUMANodeAffinity: NewTestBitMask(1), + Preferred: true, + }, + { + NUMANodeAffinity: NewTestBitMask(0, 1), + Preferred: false, + }, + }, + }, + }, + }, + expected: true, + }, { name: "QOSClass set as Guaranteed. Restricted Policy. No Preferred affinity.", qosClass: v1.PodQOSGuaranteed, @@ -989,6 +1063,24 @@ func TestAdmit(t *testing.T) { }, expected: false, }, + { + name: "QOSClass set as Burstable. Restricted Policy. No Preferred affinity.", + qosClass: v1.PodQOSBurstable, + policy: NewRestrictedPolicy(), + hp: []HintProvider{ + &mockHintProvider{ + map[string][]TopologyHint{ + "resource": { + { + NUMANodeAffinity: NewTestBitMask(0, 1), + Preferred: false, + }, + }, + }, + }, + }, + expected: false, + }, } for _, tc := range tcases { man := manager{