From df1b54fc09519548fe37c458ab99f960ac1960bb Mon Sep 17 00:00:00 2001 From: Kevin Klues Date: Wed, 21 Aug 2019 18:17:38 +0200 Subject: [PATCH] Fail fast with TopologyManager on machines with more than 8 NUMA Nodes --- .../cm/topologymanager/topology_manager.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkg/kubelet/cm/topologymanager/topology_manager.go b/pkg/kubelet/cm/topologymanager/topology_manager.go index 8490fbcc0b2..e912916c5ea 100644 --- a/pkg/kubelet/cm/topologymanager/topology_manager.go +++ b/pkg/kubelet/cm/topologymanager/topology_manager.go @@ -26,6 +26,18 @@ import ( "k8s.io/kubernetes/pkg/kubelet/lifecycle" ) +const ( + // maxAllowableNUMANodes specifies the maximum number of NUMA Nodes that + // the TopologyManager supports on the underlying machine. + // + // At present, having more than this number of NUMA Nodes will result in a + // state explosion when trying to enumerate possible NUMAAffinity masks and + // generate hints for them. As such, if more NUMA Nodes than this are + // present on a machine and the TopologyManager is enabled, an error will + // be returned and the TopologyManager will not be loaded. + maxAllowableNUMANodes = 8 +) + //Manager interface provides methods for Kubelet to manage pod topology hints type Manager interface { //Manager implements pod admit handler interface @@ -100,6 +112,10 @@ func NewManager(numaNodeInfo cputopology.NUMANodeInfo, topologyPolicyName string numaNodes = append(numaNodes, node) } + if len(numaNodes) > maxAllowableNUMANodes { + return nil, fmt.Errorf("unsupported on machines with more than %v NUMA Nodes", maxAllowableNUMANodes) + } + var hp []HintProvider pth := make(map[string]map[string]TopologyHint) pm := make(map[string]string)