in pkg/scheduler/scheduler.go [204:234]
func (s *NodeScheduler) ContainerRestartHandler(ctx context.Context) (handler func(pod *v1.Pod, status v1.ContainerStatus)) {
handler = func(pod *v1.Pod, status v1.ContainerStatus) {
addon, ok := common.AddonFromPod(pod)
if !ok {
return
}
s.RegisterAddonRestart(addon)
state := status.LastTerminationState.Terminated
var reason, exitCode string
if state != nil {
klog.V(1).Infof("container %q restarted because of %s (%d)\n", status.Name, state.Reason, state.ExitCode)
reason = state.Reason
exitCode = fmt.Sprint(state.ExitCode)
} else {
klog.V(1).Infof("container %q restarted but termination reason unknown\n", status.Name)
reason = "unknown"
exitCode = "unknown"
}
labels := map[string]string{
"nodepool": s.cfg.Nodepool,
"zone": s.cfg.Location,
"container_name": status.Name,
"reason": reason,
"exit_code": exitCode,
}
addAddonLabels(addon, labels)
s.mr.RecordContainerRestart(ctx, labels)
}
return
}