diff --git a/pkg/kubelet/pleg/generic.go b/pkg/kubelet/pleg/generic.go index 2d89157d17d..51e795a9913 100644 --- a/pkg/kubelet/pleg/generic.go +++ b/pkg/kubelet/pleg/generic.go @@ -124,17 +124,17 @@ func generateEvent(podID types.UID, cid string, oldState, newState plegContainer case plegContainerExited: return &PodLifecycleEvent{ID: podID, Type: ContainerDied, Data: cid} case plegContainerUnknown: - // Don't generate any event if the status is unknown. - return nil + return &PodLifecycleEvent{ID: podID, Type: ContainerChanged, Data: cid} case plegContainerNonExistent: // We report "ContainerDied" when container was stopped OR removed. We // may want to distinguish the two cases in the future. switch oldState { case plegContainerExited: - // We already reported that the container died before. There is no - // need to do it again. - return nil + // We already reported that the container died before. + return &PodLifecycleEvent{ID: podID, Type: ContainerRemoved, Data: cid} default: + // TODO: We may want to generate a ContainerRemoved event as well. + // It's ok now because no one relies on the ContainerRemoved event. return &PodLifecycleEvent{ID: podID, Type: ContainerDied, Data: cid} } default: @@ -204,6 +204,10 @@ func (g *GenericPLEG) relist() { // Update the internal storage and send out the events. g.podRecords.update(pid) for i := range events { + // Filter out events that are not reliable and no other components use yet. + if events[i].Type == ContainerChanged || events[i].Type == ContainerRemoved { + continue + } g.eventChannel <- events[i] } } diff --git a/pkg/kubelet/pleg/pleg.go b/pkg/kubelet/pleg/pleg.go index 57a80f4481a..c23472ca925 100644 --- a/pkg/kubelet/pleg/pleg.go +++ b/pkg/kubelet/pleg/pleg.go @@ -23,13 +23,14 @@ import ( type PodLifeCycleEventType string const ( - ContainerStarted PodLifeCycleEventType = "ContainerStarted" - ContainerDied PodLifeCycleEventType = "ContainerDied" - NetworkSetupCompleted PodLifeCycleEventType = "NetworkSetupCompleted" - NetworkFailed PodLifeCycleEventType = "NetworkFailed" + ContainerStarted PodLifeCycleEventType = "ContainerStarted" + ContainerDied PodLifeCycleEventType = "ContainerDied" // PodSync is used to trigger syncing of a pod when the observed change of // the state of the pod cannot be captured by any single event above. PodSync PodLifeCycleEventType = "PodSync" + // Do not use the events below because they are disabled in GenericPLEG. + ContainerRemoved PodLifeCycleEventType = "ContainerRemoved" + ContainerChanged PodLifeCycleEventType = "ContainerChanged" ) // PodLifecycleEvent is an event that reflects the change of the pod state.