diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 9315a3a8ba2..f140a36b604 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -696,7 +696,7 @@ const ( // owner: @jsturtevant // kep: https://kep.k8s.io/4888 // - // Enables the Windows GMSA feature. + // Add CPU and Memory Affinity support to Windows nodes with CPUManager, MemoryManager and Topology manager WindowsCPUAndMemoryAffinity featuregate.Feature = "WindowsCPUAndMemoryAffinity" // owner: @marosset diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go index 30283db64c7..576cc376c90 100644 --- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go +++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go @@ -19,9 +19,6 @@ package cpumanager import ( "context" "fmt" - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" - "k8s.io/kubernetes/pkg/features" "os" "reflect" "runtime" @@ -30,6 +27,10 @@ import ( "testing" "time" + utilfeature "k8s.io/apiserver/pkg/util/feature" + featuregatetesting "k8s.io/component-base/featuregate/testing" + "k8s.io/kubernetes/pkg/features" + cadvisorapi "github.com/google/cadvisor/info/v1" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_windows.go b/pkg/kubelet/cm/cpumanager/cpu_manager_windows.go index fedc61ac44b..f9a239ce550 100644 --- a/pkg/kubelet/cm/cpumanager/cpu_manager_windows.go +++ b/pkg/kubelet/cm/cpumanager/cpu_manager_windows.go @@ -29,21 +29,21 @@ import ( ) func (m *manager) updateContainerCPUSet(ctx context.Context, containerID string, cpus cpuset.CPUSet) error { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.WindowsCPUAndMemoryAffinity) { - affinities := winstats.CpusToGroupAffinity(cpus.List()) - var cpuGroupAffinities []*runtimeapi.WindowsCpuGroupAffinity - for _, affinity := range affinities { - cpuGroupAffinities = append(cpuGroupAffinities, &runtimeapi.WindowsCpuGroupAffinity{ - CpuGroup: uint32(affinity.Group), - CpuMask: uint64(affinity.Mask), - }) - } - return m.containerRuntime.UpdateContainerResources(ctx, containerID, &runtimeapi.ContainerResources{ - Windows: &runtimeapi.WindowsContainerResources{ - AffinityCpus: cpuGroupAffinities, - }, - }) + if !utilfeature.DefaultFeatureGate.Enabled(kubefeatures.WindowsCPUAndMemoryAffinity) { + return nil } - return nil + affinities := winstats.CpusToGroupAffinity(cpus.List()) + var cpuGroupAffinities []*runtimeapi.WindowsCpuGroupAffinity + for _, affinity := range affinities { + cpuGroupAffinities = append(cpuGroupAffinities, &runtimeapi.WindowsCpuGroupAffinity{ + CpuGroup: uint32(affinity.Group), + CpuMask: uint64(affinity.Mask), + }) + } + return m.containerRuntime.UpdateContainerResources(ctx, containerID, &runtimeapi.ContainerResources{ + Windows: &runtimeapi.WindowsContainerResources{ + AffinityCpus: cpuGroupAffinities, + }, + }) } diff --git a/pkg/kubelet/winstats/perfcounter_nodestats_windows.go b/pkg/kubelet/winstats/perfcounter_nodestats_windows.go index 7f77e9a355e..df5fb41ef68 100644 --- a/pkg/kubelet/winstats/perfcounter_nodestats_windows.go +++ b/pkg/kubelet/winstats/perfcounter_nodestats_windows.go @@ -20,8 +20,6 @@ limitations under the License. package winstats import ( - utilfeature "k8s.io/apiserver/pkg/util/feature" - kubefeatures "k8s.io/kubernetes/pkg/features" "os" "runtime" "strconv" @@ -31,6 +29,9 @@ import ( "time" "unsafe" + utilfeature "k8s.io/apiserver/pkg/util/feature" + kubefeatures "k8s.io/kubernetes/pkg/features" + cadvisorapi "github.com/google/cadvisor/info/v1" "github.com/pkg/errors" "golang.org/x/sys/windows"