mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #19302 from yujuhong/fix_restarts
Fix container restarts caused by kubelet restarts
This commit is contained in:
commit
17d0074df6
@ -1709,30 +1709,28 @@ func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecont
|
|||||||
var apiPodStatus api.PodStatus
|
var apiPodStatus api.PodStatus
|
||||||
var podStatus *kubecontainer.PodStatus
|
var podStatus *kubecontainer.PodStatus
|
||||||
|
|
||||||
|
// Always generate the kubecontainer.PodStatus to know whether there are
|
||||||
|
// running containers associated with the pod.
|
||||||
|
podStatusPtr, apiPodStatusPtr, err := kl.containerRuntime.GetPodStatusAndAPIPodStatus(pod)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Unable to get status for pod %q: %v", format.Pod(pod), err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
apiPodStatus = *apiPodStatusPtr
|
||||||
|
podStatus = podStatusPtr
|
||||||
|
|
||||||
if updateType == kubetypes.SyncPodCreate {
|
if updateType == kubetypes.SyncPodCreate {
|
||||||
// This is the first time we are syncing the pod. Record the latency
|
// This is the first time we are syncing the pod. Record the latency
|
||||||
// since kubelet first saw the pod if firstSeenTime is set.
|
// since kubelet first saw the pod if firstSeenTime is set.
|
||||||
if !firstSeenTime.IsZero() {
|
if !firstSeenTime.IsZero() {
|
||||||
metrics.PodWorkerStartLatency.Observe(metrics.SinceInMicroseconds(firstSeenTime))
|
metrics.PodWorkerStartLatency.Observe(metrics.SinceInMicroseconds(firstSeenTime))
|
||||||
}
|
}
|
||||||
|
// kubelet may have just been restarted. Re-use the last known
|
||||||
|
// apiPodStatus.
|
||||||
apiPodStatus = pod.Status
|
apiPodStatus = pod.Status
|
||||||
apiPodStatus.StartTime = &unversioned.Time{Time: start}
|
apiPodStatus.StartTime = &unversioned.Time{Time: start}
|
||||||
kl.statusManager.SetPodStatus(pod, apiPodStatus)
|
kl.statusManager.SetPodStatus(pod, apiPodStatus)
|
||||||
podStatus = &kubecontainer.PodStatus{
|
glog.V(3).Infof("Reusing api pod status for new pod %q", format.Pod(pod))
|
||||||
ID: pod.UID,
|
|
||||||
Name: pod.Name,
|
|
||||||
Namespace: pod.Namespace,
|
|
||||||
}
|
|
||||||
glog.V(3).Infof("Not generating pod status for new pod %q", format.Pod(pod))
|
|
||||||
} else {
|
|
||||||
podStatusPtr, apiPodStatusPtr, err := kl.containerRuntime.GetPodStatusAndAPIPodStatus(pod)
|
|
||||||
if err != nil {
|
|
||||||
glog.Errorf("Unable to get status for pod %q: %v", format.Pod(pod), err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
apiPodStatus = *apiPodStatusPtr
|
|
||||||
podStatus = podStatusPtr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pullSecrets, err := kl.getPullSecretsForPod(pod)
|
pullSecrets, err := kl.getPullSecretsForPod(pod)
|
||||||
|
Loading…
Reference in New Issue
Block a user