From 7358f80d11b0bdc6b34a24958f65406c69448742 Mon Sep 17 00:00:00 2001 From: Joel Smith Date: Tue, 31 Oct 2017 09:41:13 -0600 Subject: [PATCH] UPSTREAM: 54828: trigger endpoint update on pod deletion --- .../pkg/controller/endpoint/endpoints_controller.go | 4 ++++ .../pkg/controller/endpoint/endpoints_controller_test.go | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller.go b/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller.go index fabab5b20f19..054ca9821143 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller.go @@ -206,6 +206,10 @@ func podToEndpointAddress(pod *v1.Pod) *v1.EndpointAddress { } func podChanged(oldPod, newPod *v1.Pod) bool { + // If the pod's deletion timestamp is set, remove endpoint from ready address. + if newPod.DeletionTimestamp != oldPod.DeletionTimestamp { + return true + } // If the pod's readiness has changed, the associated endpoint address // will move from the unready endpoints set to the ready endpoints. // So for the purposes of an endpoint, a readiness change on a pod diff --git a/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller_test.go b/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller_test.go index 153101fa18c4..2b9f5774c86d 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller_test.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/endpoint/endpoints_controller_test.go @@ -774,6 +774,14 @@ func TestPodChanged(t *testing.T) { t.Errorf("Expected pod to be changed with pod readiness change") } oldPod.Status.Conditions = saveConditions + + oldTimestamp := newPod.ObjectMeta.DeletionTimestamp + now := metav1.NewTime(time.Now().UTC()) + newPod.ObjectMeta.DeletionTimestamp = &now + if !podChanged(oldPod, newPod) { + t.Errorf("Expected pod to be changed with DeletionTimestamp change") + } + newPod.ObjectMeta.DeletionTimestamp = oldTimestamp } func TestDetermineNeededServiceUpdates(t *testing.T) {