Files
kubernetes/pkg
Kubernetes Submit Queue 8eb7eeef39 Merge pull request #63321 from sjenning/fix-pod-deletor
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

 kubelet: force filterContainerID to empty string when removeAll is true 

fixes https://github.com/kubernetes/kubernetes/issues/57865

alternative to https://github.com/kubernetes/kubernetes/pull/62170

There is a bug in the container deletor where if `removeAll` is `true` in `deleteContainersInPod()` the `filterContainerID` is still used to filter results in `getContainersToDeleteInPod()`.  If the filter container is not found, no containers are returned for deletion.

https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/pod_container_deletor.go#L74-L77

This is the case for the delayed deletion a pod in `CrashLoopBackoff` as the death of the infra container in response to the `DELETE` is detected by PLEG and triggers an attempt to clean up all containers but uses the infra container id as a filter with `removeAll` set to `true`.  The infra container is immediately deleted and thus can not be found when `getContainersToDeleteInPod()` tries to find it.  Thus the dead app container from the previous restart attempt still exists.

`canBeDeleted()` in the status manager will return `false` until all the pod containers are deleted, delaying the deletion of the pod on the API server.

The removal of the containers is eventually forced by the API server `REMOVE` after the grace period.
2018-05-01 09:50:13 -07:00
..
2018-05-01 07:51:17 -04:00
2018-05-01 07:51:17 -04:00
2018-02-16 13:43:01 -08:00
2018-04-25 09:47:14 -07:00
2018-04-26 08:27:49 -04:00
2018-02-16 13:43:01 -08:00
2018-02-12 10:54:33 -05:00
2018-04-11 18:35:24 +02:00
2018-02-16 13:43:01 -08:00
2018-01-15 23:17:19 +08:00
2018-03-13 17:20:16 +08:00