Skip to content

Commit

Permalink
remove pod deletion from update process
Browse files Browse the repository at this point in the history
Signed-off-by: bobz965 <[email protected]>
  • Loading branch information
zbb88888 committed Feb 3, 2024
1 parent 5acc0ca commit d803448
Showing 1 changed file with 46 additions and 40 deletions.
86 changes: 46 additions & 40 deletions pkg/controller/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -247,20 +247,58 @@ func (c *Controller) enqueueDeletePod(obj interface{}) {
return
}

p := obj.(*v1.Pod)
pod := obj.(*v1.Pod)
if c.config.EnableNP {
c.namedPort.DeleteNamedPortByPod(p)
for _, np := range c.podMatchNetworkPolicies(p) {
c.namedPort.DeleteNamedPortByPod(pod)
for _, np := range c.podMatchNetworkPolicies(pod) {
c.updateNpQueue.Add(np)
}
}

if p.Spec.HostNetwork {
if pod.Spec.HostNetwork {
return
}

isStateful, statefulSetName := isStatefulSetPod(pod)
isVmPod, vmName := isVmPod(pod)

if !isPodAlive(pod) && !isStateful && !isVmPod {
klog.Infof("enqueue delete pod %s", key)
c.deletePodQueue.Add(obj)
return
}

if pod.DeletionTimestamp != nil && !isStateful && !isVmPod {
go func() {
// In case node get lost and pod can not be deleted,
// the ip address will not be recycled
delay := time.Duration(*pod.Spec.TerminationGracePeriodSeconds)
klog.Infof("after graceful period enqueue delete pod %s", key)
time.Sleep(delay * time.Second)
c.deletePodQueue.Add(obj)
}()
return
}

klog.Infof("enqueue delete pod %s", key)
c.deletePodQueue.Add(obj)
// do not delete statefulset pod unless ownerReferences is deleted
if isStateful && isStatefulSetPodToDel(c.config.KubeClient, pod, statefulSetName) {
go func() {
delay := time.Duration(*pod.Spec.TerminationGracePeriodSeconds)
klog.Infof("after graceful period enqueue delete pod %s", key)
time.Sleep(delay * time.Second)
c.deletePodQueue.Add(obj)
}()
return
}
if isVmPod && c.isVmToDel(pod, vmName) {
go func() {
delay := time.Duration(*pod.Spec.TerminationGracePeriodSeconds)
klog.Infof("after graceful period enqueue delete pod %s", key)
time.Sleep(delay * time.Second)
c.deletePodQueue.Add(obj)
}()
return
}
}

func (c *Controller) enqueueUpdatePod(oldObj, newObj interface{}) {
Expand Down Expand Up @@ -292,40 +330,8 @@ func (c *Controller) enqueueUpdatePod(oldObj, newObj interface{}) {
return
}

isStateful, statefulSetName := isStatefulSetPod(newPod)
isVmPod, vmName := isVmPod(newPod)
if !isPodAlive(newPod) && !isStateful && !isVmPod {
klog.Infof("update pod process enqueue delete pod %s", key)
c.deletePodQueue.Add(newObj)
return
}

if newPod.DeletionTimestamp != nil && !isStateful && !isVmPod {
go func() {
// In case node get lost and pod can not be deleted,
// the ip address will not be recycled
time.Sleep(time.Duration(*newPod.Spec.TerminationGracePeriodSeconds) * time.Second)
klog.Infof("update pod process enqueue delete pod %s", key)
c.deletePodQueue.Add(newObj)
}()
return
}

// do not delete statefulset pod unless ownerReferences is deleted
if isStateful && isStatefulSetPodToDel(c.config.KubeClient, newPod, statefulSetName) {
go func() {
klog.Infof("update pod process enqueue delete sts pod %s", key)
time.Sleep(time.Duration(*newPod.Spec.TerminationGracePeriodSeconds) * time.Second)
c.deletePodQueue.Add(newObj)
}()
return
}
if isVmPod && c.isVmToDel(newPod, vmName) {
go func() {
klog.Infof("update pod process enqueue delete vm pod %s", key)
time.Sleep(time.Duration(*newPod.Spec.TerminationGracePeriodSeconds) * time.Second)
c.deletePodQueue.Add(newObj)
}()
if newPod.DeletionTimestamp != nil {
// pod in deleting not update anymore
return
}

Expand Down

0 comments on commit d803448

Please sign in to comment.