diff options
| author | wackxu <xushiwei5@huawei.com> | 2022-08-17 11:53:44 +0800 |
|---|---|---|
| committer | wackxu <xushiwei5@huawei.com> | 2022-09-22 10:44:09 +0800 |
| commit | 4d5bfd6fb01fc4ca24e29e48c7f3a42a4468d7d3 (patch) | |
| tree | a2c74d6e32d40bcd36d966dd8213fbbc231e0ea8 | |
| parent | Merge pull request #4204 from vincentgoat/automated-cherry-pick-of-#3807-upst... (diff) | |
| download | kubeedge-4d5bfd6fb01fc4ca24e29e48c7f3a42a4468d7d3.tar.gz | |
fix delete pod terminating stuck when pod is create and quick delete
Signed-off-by: wackxu <xushiwei5@huawei.com>
| -rw-r--r-- | edge/pkg/edged/status/status_manager.go | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/edge/pkg/edged/status/status_manager.go b/edge/pkg/edged/status/status_manager.go index ea4a49efb..ff2554e2b 100644 --- a/edge/pkg/edged/status/status_manager.go +++ b/edge/pkg/edged/status/status_manager.go @@ -35,6 +35,7 @@ import ( kubepod "k8s.io/kubernetes/pkg/kubelet/pod" kubestatus "k8s.io/kubernetes/pkg/kubelet/status" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" + "k8s.io/kubernetes/pkg/kubelet/util/format" edgeapi "github.com/kubeedge/kubeedge/common/types" "github.com/kubeedge/kubeedge/edge/pkg/metamanager/client" @@ -549,10 +550,22 @@ func (m *manager) syncBatch() { } } - for uid, status := range m.podStatuses { - syncedUID := kubetypes.MirrorPodUID(uid) - if m.needsUpdate(types.UID(syncedUID), status) { - updatedStatuses = append(updatedStatuses, podStatusSyncRequest{uid, status}) + for _, pod := range m.podManager.GetPods() { + podStatus, ok := m.podStatuses[pod.UID] + if !ok { + if m.canBeDeleted(pod, podStatus.status) { + err := m.metaClient.Pods(pod.Namespace).Delete(pod.Name, string(pod.UID)) + if err != nil { + klog.Errorf("Failed to delete the pod %q: %v", format.Pod(pod), err) + } else { + klog.V(2).Infof("Successfully sent delete event to cloud for pod: %s", format.Pod(pod)) + } + } + continue + } + + if m.needsUpdate(pod.UID, podStatus) { + updatedStatuses = append(updatedStatuses, podStatusSyncRequest{pod.UID, podStatus}) } } }() |
