From b594eb6ece090887aa48c8d63eb08eff8775d70c Mon Sep 17 00:00:00 2001 From: Ciprian Hacman Date: Sat, 4 Sep 2021 11:33:04 +0300 Subject: [PATCH] Add support --kernel-memcg-notification Kubelet flag --- k8s/crds/kops.k8s.io_clusters.yaml | 8 ++++++++ k8s/crds/kops.k8s.io_instancegroups.yaml | 4 ++++ pkg/apis/kops/componentconfig.go | 2 ++ pkg/apis/kops/v1alpha2/componentconfig.go | 2 ++ pkg/apis/kops/v1alpha2/zz_generated.conversion.go | 2 ++ pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go | 5 +++++ pkg/apis/kops/zz_generated.deepcopy.go | 5 +++++ 7 files changed, 28 insertions(+) diff --git a/k8s/crds/kops.k8s.io_clusters.yaml b/k8s/crds/kops.k8s.io_clusters.yaml index 9ab711e40f..4adc040e86 100644 --- a/k8s/crds/kops.k8s.io_clusters.yaml +++ b/k8s/crds/kops.k8s.io_clusters.yaml @@ -2560,6 +2560,10 @@ spec: pulls If no pulling progress is made before this deadline, the image pulling will be cancelled. (default 1m0s) type: string + kernelMemcgNotification: + description: Integrate with the kernel memcg notification to determine + if memory eviction thresholds are crossed rather than polling. + type: boolean kubeReserved: additionalProperties: type: string @@ -2975,6 +2979,10 @@ spec: pulls If no pulling progress is made before this deadline, the image pulling will be cancelled. (default 1m0s) type: string + kernelMemcgNotification: + description: Integrate with the kernel memcg notification to determine + if memory eviction thresholds are crossed rather than polling. + type: boolean kubeReserved: additionalProperties: type: string diff --git a/k8s/crds/kops.k8s.io_instancegroups.yaml b/k8s/crds/kops.k8s.io_instancegroups.yaml index 8f92c2c517..5109b72283 100644 --- a/k8s/crds/kops.k8s.io_instancegroups.yaml +++ b/k8s/crds/kops.k8s.io_instancegroups.yaml @@ -452,6 +452,10 @@ spec: pulls If no pulling progress is made before this deadline, the image pulling will be cancelled. (default 1m0s) type: string + kernelMemcgNotification: + description: Integrate with the kernel memcg notification to determine + if memory eviction thresholds are crossed rather than polling. + type: boolean kubeReserved: additionalProperties: type: string diff --git a/pkg/apis/kops/componentconfig.go b/pkg/apis/kops/componentconfig.go index 76be502813..c1bc130a66 100644 --- a/pkg/apis/kops/componentconfig.go +++ b/pkg/apis/kops/componentconfig.go @@ -159,6 +159,8 @@ type KubeletConfigSpec struct { Taints []string `json:"taints,omitempty" flag:"register-with-taints"` // FeatureGates is set of key=value pairs that describe feature gates for alpha/experimental features. FeatureGates map[string]string `json:"featureGates,omitempty" flag:"feature-gates"` + // Integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling. + KernelMemcgNotification *bool `json:"kernelMemcgNotification,omitempty" flag:"kernel-memcg-notification"` // Resource reservation for kubernetes system daemons like the kubelet, container runtime, node problem detector, etc. KubeReserved map[string]string `json:"kubeReserved,omitempty" flag:"kube-reserved"` // Control group for kube daemons. diff --git a/pkg/apis/kops/v1alpha2/componentconfig.go b/pkg/apis/kops/v1alpha2/componentconfig.go index a33b6fbbfa..54d1318c29 100644 --- a/pkg/apis/kops/v1alpha2/componentconfig.go +++ b/pkg/apis/kops/v1alpha2/componentconfig.go @@ -159,6 +159,8 @@ type KubeletConfigSpec struct { Taints []string `json:"taints,omitempty" flag:"register-with-taints"` // FeatureGates is set of key=value pairs that describe feature gates for alpha/experimental features. FeatureGates map[string]string `json:"featureGates,omitempty" flag:"feature-gates"` + // Integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling. + KernelMemcgNotification *bool `json:"kernelMemcgNotification,omitempty" flag:"kernel-memcg-notification"` // Resource reservation for kubernetes system daemons like the kubelet, container runtime, node problem detector, etc. KubeReserved map[string]string `json:"kubeReserved,omitempty" flag:"kube-reserved"` // Control group for kube daemons. diff --git a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go index ce3b773cd1..29b747d939 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go @@ -5247,6 +5247,7 @@ func autoConvert_v1alpha2_KubeletConfigSpec_To_kops_KubeletConfigSpec(in *Kubele out.VolumePluginDirectory = in.VolumePluginDirectory out.Taints = in.Taints out.FeatureGates = in.FeatureGates + out.KernelMemcgNotification = in.KernelMemcgNotification out.KubeReserved = in.KubeReserved out.KubeReservedCgroup = in.KubeReservedCgroup out.SystemReserved = in.SystemReserved @@ -5343,6 +5344,7 @@ func autoConvert_kops_KubeletConfigSpec_To_v1alpha2_KubeletConfigSpec(in *kops.K out.VolumePluginDirectory = in.VolumePluginDirectory out.Taints = in.Taints out.FeatureGates = in.FeatureGates + out.KernelMemcgNotification = in.KernelMemcgNotification out.KubeReserved = in.KubeReserved out.KubeReservedCgroup = in.KubeReservedCgroup out.SystemReserved = in.SystemReserved diff --git a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go index 7e3ec3bc20..0034a1c608 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go @@ -3389,6 +3389,11 @@ func (in *KubeletConfigSpec) DeepCopyInto(out *KubeletConfigSpec) { (*out)[key] = val } } + if in.KernelMemcgNotification != nil { + in, out := &in.KernelMemcgNotification, &out.KernelMemcgNotification + *out = new(bool) + **out = **in + } if in.KubeReserved != nil { in, out := &in.KubeReserved, &out.KubeReserved *out = make(map[string]string, len(*in)) diff --git a/pkg/apis/kops/zz_generated.deepcopy.go b/pkg/apis/kops/zz_generated.deepcopy.go index c3c0f9df62..0388976dd3 100644 --- a/pkg/apis/kops/zz_generated.deepcopy.go +++ b/pkg/apis/kops/zz_generated.deepcopy.go @@ -3555,6 +3555,11 @@ func (in *KubeletConfigSpec) DeepCopyInto(out *KubeletConfigSpec) { (*out)[key] = val } } + if in.KernelMemcgNotification != nil { + in, out := &in.KernelMemcgNotification, &out.KernelMemcgNotification + *out = new(bool) + **out = **in + } if in.KubeReserved != nil { in, out := &in.KubeReserved, &out.KubeReserved *out = make(map[string]string, len(*in))