From 3b3fb6f5835a673f96c458b14104165dec2fb9f2 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sat, 1 Jun 2019 08:39:52 +0100 Subject: [PATCH] plugin/kubernetes: skip deleting pods (#2853) Don't add pods to our internal cache that are being deleted. This saves a field in the struct as well. Add (extra) comments about adding fields to the object/{Pod,Service,Endpoint} structs. Signed-off-by: Miek Gieben --- plugin/kubernetes/kubernetes.go | 5 ----- plugin/kubernetes/object/endpoint.go | 1 + plugin/kubernetes/object/pod.go | 8 ++++---- plugin/kubernetes/object/service.go | 1 + 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/plugin/kubernetes/kubernetes.go b/plugin/kubernetes/kubernetes.go index 1b8214415..f980fb4ee 100644 --- a/plugin/kubernetes/kubernetes.go +++ b/plugin/kubernetes/kubernetes.go @@ -372,11 +372,6 @@ func (k *Kubernetes) findPods(r recordRequest, zone string) (pods []msg.Service, continue } - // exclude pods in the process of termination - if p.Deleting { - continue - } - // check for matching ip and namespace if ip == p.PodIP && match(namespace, p.Namespace) { s := msg.Service{Key: strings.Join([]string{zonePath, Pod, namespace, podname}, "/"), Host: ip, TTL: k.ttl} diff --git a/plugin/kubernetes/object/endpoint.go b/plugin/kubernetes/object/endpoint.go index b8531f050..aa93b4ceb 100644 --- a/plugin/kubernetes/object/endpoint.go +++ b/plugin/kubernetes/object/endpoint.go @@ -7,6 +7,7 @@ import ( // Endpoints is a stripped down api.Endpoints with only the items we need for CoreDNS. type Endpoints struct { + // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string Name string Namespace string diff --git a/plugin/kubernetes/object/pod.go b/plugin/kubernetes/object/pod.go index 9f0ba48ad..072d8d56d 100644 --- a/plugin/kubernetes/object/pod.go +++ b/plugin/kubernetes/object/pod.go @@ -7,11 +7,11 @@ import ( // Pod is a stripped down api.Pod with only the items we need for CoreDNS. type Pod struct { + // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string PodIP string Name string Namespace string - Deleting bool *Empty } @@ -29,9 +29,10 @@ func ToPod(obj interface{}) interface{} { Namespace: pod.GetNamespace(), Name: pod.GetName(), } + // don't add pods that are being deleted. t := pod.ObjectMeta.DeletionTimestamp - if t != nil { - p.Deleting = !(*t).Time.IsZero() + if t != nil && !(*t).Time.IsZero() { + return nil } *pod = api.Pod{} @@ -48,7 +49,6 @@ func (p *Pod) DeepCopyObject() runtime.Object { PodIP: p.PodIP, Namespace: p.Namespace, Name: p.Name, - Deleting: p.Deleting, } return p1 } diff --git a/plugin/kubernetes/object/service.go b/plugin/kubernetes/object/service.go index af9a42b48..3c8304362 100644 --- a/plugin/kubernetes/object/service.go +++ b/plugin/kubernetes/object/service.go @@ -7,6 +7,7 @@ import ( // Service is a stripped down api.Service with only the items we need for CoreDNS. type Service struct { + // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string Name string Namespace string