From 64eef3e9fa4986efcaa22995e0aed17b241e5132 Mon Sep 17 00:00:00 2001 From: Etienne Champetier Date: Wed, 7 Dec 2022 10:24:48 -0500 Subject: [PATCH] kubeadm: set priority for "system-node-critical" Pods Priority is normally set by the admission controller when missing. For static pods there seems to be some corner cases, as, if priority is not explicitly set, Graceful Node Shutdown will shutdown static pods with the other pods that have priority 0 or unset. Signed-off-by: Etienne Champetier --- cmd/kubeadm/app/util/staticpod/utils.go | 3 +++ cmd/kubeadm/app/util/staticpod/utils_test.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/cmd/kubeadm/app/util/staticpod/utils.go b/cmd/kubeadm/app/util/staticpod/utils.go index 56a3f25b72a..a5ff7cf4ccc 100644 --- a/cmd/kubeadm/app/util/staticpod/utils.go +++ b/cmd/kubeadm/app/util/staticpod/utils.go @@ -56,6 +56,8 @@ var ( // ComponentPod returns a Pod object from the container, volume and annotations specifications func ComponentPod(container v1.Container, volumes map[string]v1.Volume, annotations map[string]string) v1.Pod { + // priority value for system-node-critical class + priority := int32(2000001000) return v1.Pod{ TypeMeta: metav1.TypeMeta{ APIVersion: "v1", @@ -71,6 +73,7 @@ func ComponentPod(container v1.Container, volumes map[string]v1.Volume, annotati }, Spec: v1.PodSpec{ Containers: []v1.Container{container}, + Priority: &priority, PriorityClassName: "system-node-critical", HostNetwork: true, Volumes: VolumeMapToSlice(volumes), diff --git a/cmd/kubeadm/app/util/staticpod/utils_test.go b/cmd/kubeadm/app/util/staticpod/utils_test.go index 2cce9474c67..d04f7d3c5d9 100644 --- a/cmd/kubeadm/app/util/staticpod/utils_test.go +++ b/cmd/kubeadm/app/util/staticpod/utils_test.go @@ -392,6 +392,8 @@ func TestGetEtcdProbeEndpoint(t *testing.T) { } func TestComponentPod(t *testing.T) { + // priority value for system-node-critical class + priority := int32(2000001000) var tests = []struct { name string expected v1.Pod @@ -419,6 +421,7 @@ func TestComponentPod(t *testing.T) { Name: "foo", }, }, + Priority: &priority, PriorityClassName: "system-node-critical", HostNetwork: true, Volumes: []v1.Volume{},