From 7a4531c5ba2ade5e133127e0a57e96f460e8912a Mon Sep 17 00:00:00 2001 From: HirazawaUi <695097494plus@gmail.com> Date: Fri, 3 May 2024 00:27:19 +0800 Subject: [PATCH] add ContainerStatusUnknown constant --- pkg/kubelet/container/runtime.go | 3 +++ pkg/kubelet/kubelet_pods.go | 4 ++-- pkg/kubelet/kubelet_pods_test.go | 2 +- pkg/kubelet/kubelet_test.go | 2 +- pkg/kubelet/status/status_manager.go | 4 ++-- pkg/kubelet/status/status_manager_test.go | 6 +++--- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/kubelet/container/runtime.go b/pkg/kubelet/container/runtime.go index b53214ca017..af7799c8afc 100644 --- a/pkg/kubelet/container/runtime.go +++ b/pkg/kubelet/container/runtime.go @@ -274,6 +274,9 @@ const ( ContainerStateUnknown State = "unknown" ) +// ContainerReasonStatusUnknown indicates a container the status of the container cannot be determined. +const ContainerReasonStatusUnknown string = "ContainerStatusUnknown" + // Container provides the runtime information for a container, such as ID, hash, // state of the container. type Container struct { diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 58b28eb77e2..03320574a74 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -2016,7 +2016,7 @@ func (kl *Kubelet) convertToAPIContainerStatuses(pod *v1.Pod, podStatus *kubecon // twice. "container never ran" is different than "container ran and failed". This is handled differently in the kubelet // and it is handled differently in higher order logic like crashloop detection and handling status.State.Terminated = &v1.ContainerStateTerminated{ - Reason: "ContainerStatusUnknown", + Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was terminated", ExitCode: 137, // this code indicates an error } @@ -2226,7 +2226,7 @@ func (kl *Kubelet) convertToAPIContainerStatuses(pod *v1.Pod, podStatus *kubecon // https://github.com/kubernetes/kubernetes/blob/90c9f7b3e198e82a756a68ffeac978a00d606e55/pkg/kubelet/kubelet_pods.go#L1440-L1445 // This prevents the pod from becoming pending status.LastTerminationState.Terminated = &v1.ContainerStateTerminated{ - Reason: "ContainerStatusUnknown", + Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was deleted. The container used to be Running", ExitCode: 137, } diff --git a/pkg/kubelet/kubelet_pods_test.go b/pkg/kubelet/kubelet_pods_test.go index e1559f1e0dc..ea3a9ffc333 100644 --- a/pkg/kubelet/kubelet_pods_test.go +++ b/pkg/kubelet/kubelet_pods_test.go @@ -2154,7 +2154,7 @@ func waitingWithLastTerminationUnknown(cName string, restartCount int32) v1.Cont }, LastTerminationState: v1.ContainerState{ Terminated: &v1.ContainerStateTerminated{ - Reason: "ContainerStatusUnknown", + Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was deleted. The container used to be Running", ExitCode: 137, }, diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 906ad11cc20..b879e3832db 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -2134,7 +2134,7 @@ func TestGenerateAPIPodStatusWithReasonCache(t *testing.T) { "unknown": {Terminated: &v1.ContainerStateTerminated{ ExitCode: 137, Message: "The container could not be located when the pod was terminated", - Reason: "ContainerStatusUnknown", + Reason: kubecontainer.ContainerReasonStatusUnknown, }}, }, expectedLastTerminationState: map[string]v1.ContainerState{ diff --git a/pkg/kubelet/status/status_manager.go b/pkg/kubelet/status/status_manager.go index b08923bae4b..f1d85ad9ddf 100644 --- a/pkg/kubelet/status/status_manager.go +++ b/pkg/kubelet/status/status_manager.go @@ -446,7 +446,7 @@ func (m *manager) TerminatePod(pod *v1.Pod) { } status.ContainerStatuses[i].State = v1.ContainerState{ Terminated: &v1.ContainerStateTerminated{ - Reason: "ContainerStatusUnknown", + Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was terminated", ExitCode: 137, }, @@ -462,7 +462,7 @@ func (m *manager) TerminatePod(pod *v1.Pod) { } status.InitContainerStatuses[i].State = v1.ContainerState{ Terminated: &v1.ContainerStateTerminated{ - Reason: "ContainerStatusUnknown", + Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was terminated", ExitCode: 137, }, diff --git a/pkg/kubelet/status/status_manager_test.go b/pkg/kubelet/status/status_manager_test.go index bf876279629..e2f8cc9f6fc 100644 --- a/pkg/kubelet/status/status_manager_test.go +++ b/pkg/kubelet/status/status_manager_test.go @@ -638,7 +638,7 @@ func TestTerminatePod(t *testing.T) { assert.False(t, newStatus.InitContainerStatuses[i].State.Terminated == nil, "expected init containers to be terminated") } - expectUnknownState := v1.ContainerState{Terminated: &v1.ContainerStateTerminated{Reason: "ContainerStatusUnknown", Message: "The container could not be located when the pod was terminated", ExitCode: 137}} + expectUnknownState := v1.ContainerState{Terminated: &v1.ContainerStateTerminated{Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was terminated", ExitCode: 137}} if !reflect.DeepEqual(newStatus.InitContainerStatuses[0].State, expectUnknownState) { t.Errorf("terminated container state not defaulted: %s", cmp.Diff(newStatus.InitContainerStatuses[0].State, expectUnknownState)) } @@ -723,7 +723,7 @@ func TestTerminatePodWaiting(t *testing.T) { assert.False(t, container.State.Waiting == nil, "expected init containers to be waiting") } - expectUnknownState := v1.ContainerState{Terminated: &v1.ContainerStateTerminated{Reason: "ContainerStatusUnknown", Message: "The container could not be located when the pod was terminated", ExitCode: 137}} + expectUnknownState := v1.ContainerState{Terminated: &v1.ContainerStateTerminated{Reason: kubecontainer.ContainerReasonStatusUnknown, Message: "The container could not be located when the pod was terminated", ExitCode: 137}} if !reflect.DeepEqual(newStatus.InitContainerStatuses[0].State, expectUnknownState) { t.Errorf("terminated container state not defaulted: %s", cmp.Diff(newStatus.InitContainerStatuses[0].State, expectUnknownState)) } @@ -772,7 +772,7 @@ func TestTerminatePod_DefaultUnknownStatus(t *testing.T) { if state.Terminated == nil || state.Running != nil || state.Waiting != nil { t.Fatalf("unexpected state: %#v", state) } - if state.Terminated.ExitCode != 137 || state.Terminated.Reason != "ContainerStatusUnknown" || len(state.Terminated.Message) == 0 { + if state.Terminated.ExitCode != 137 || state.Terminated.Reason != kubecontainer.ContainerReasonStatusUnknown || len(state.Terminated.Message) == 0 { t.Fatalf("unexpected terminated state: %#v", state.Terminated) } }