'CoreDNS returning incorrect IP (mostly)

Having difficulties tracking down this issue. Have had my cluster running untouched for about 6 months with no issues. It reboots on the first of the month, every month. As of May the 1st after it rebooted there have been issues with connectivity between my services. Mainly nginx reverse proxies, but it's happening between all services (Authelia to LDAP and so on).

After much investigation it seems that pods are resolving the incorrect IP addresses for services. When querying CoreDNS directly from inside an nginx pod, I can clearly see the IP addresses of my services swapping. For example:

/ # cat /etc/resolv.conf
nameserver 10.96.0.10
search cert-manager.svc.cluster.local svc.cluster.local cluster.local mydomain.xyz
options ndots:5
/ # nslookup motioneye.home.svc.cluster.local 10.96.0.10
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      motioneye.home.svc.cluster.local
Address 1: 10.105.38.36 motioneye.home.svc.cluster.local
/ # nslookup motioneye.home.svc.cluster.local 10.96.0.10
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      motioneye.home.svc.cluster.local
Address 1: 10.7.9.10 quickstart-ingress-nginx-controller.cert-manager.svc.cluster.local

Logs from CoreDNS:

[INFO] 10.244.2.187:57366 - 13803 "AAAA IN motioneye.home.svc.cluster.local. udp 50 false 512" NOERROR qr,aa,rd 143 0.000276052s
[INFO] 10.244.2.187:57366 - 13462 "A IN motioneye.home.svc.cluster.local. udp 50 false 512" NOERROR qr,aa,rd 98 0.000533974s
[INFO] 10.244.2.187:59445 - 12082 "PTR IN 36.38.105.10.in-addr.arpa. udp 43 false 512" NOERROR qr,aa,rd 114 0.00028283s
[INFO] 10.244.2.187:34510 - 42594 "AAAA IN motioneye.home.svc.cluster.local.cluster.local. udp 64 false 512" NXDOMAIN qr,aa,rd 157 0.000262126s
[INFO] 10.244.2.187:34510 - 42137 "A IN motioneye.home.svc.cluster.local.cluster.local. udp 64 false 512" NXDOMAIN qr,aa,rd 157 0.000489475s
[INFO] 10.244.2.187:48887 - 48126 "AAAA IN motioneye.home.svc.cluster.local.cluster.local. udp 64 false 512" NXDOMAIN qr,aa,rd 157 0.000580881s
[INFO] 10.244.2.187:48887 - 47758 "A IN motioneye.home.svc.cluster.local.cluster.local. udp 64 false 512" NXDOMAIN qr,aa,rd 157 0.000857914s
[INFO] 10.244.2.187:57896 - 20940 "A IN motioneye.home.svc.cluster.local.mydomain.xyz. udp 61 false 512" NOERROR qr,aa,rd,ra 120 0.009537425s
[INFO] 10.244.2.187:57896 - 21303 "AAAA IN motioneye.home.svc.cluster.local.mydomain.xyz. udp 61 false 512" NXDOMAIN qr,rd,ra 143 0.030400843s
[INFO] 10.244.2.187:43096 - 9412 "PTR IN 10.9.7.10.in-addr.arpa. udp 40 false 512" NOERROR qr,aa,rd 142 0.000471438s
[INFO] 10.244.2.187:52860 - 25652 "AAAA IN motioneye.home.svc.cluster.local.mydomain.xyz. udp 61 false 512" NOERROR qr,aa,rd,ra 61 0.000276867s
[INFO] 10.244.2.187:52860 - 24926 "A IN motioneye.home.svc.cluster.local.mydomain.xyz. udp 61 false 512" NXDOMAIN qr,aa,rd,ra 143 0.000415013s
[INFO] 10.244.2.187:48476 - 38937 "A IN motioneye.home.svc.cluster.local. udp 50 false 512" NOERROR qr,aa,rd 98 0.000482234s
[INFO] 10.244.2.187:48476 - 39260 "AAAA IN motioneye.home.svc.cluster.local. udp 50 false 512" NOERROR qr,aa,rd 143 0.00066462s
[INFO] 10.244.2.187:53694 - 43277 "PTR IN 36.38.105.10.in-addr.arpa. udp 43 false 512" NOERROR qr,aa,rd 114 0.000234164s
[INFO] 10.244.2.187:45050 - 36636 "PTR IN 10.0.96.10.in-addr.arpa. udp 41 false 512" NOERROR qr,aa,rd 116 0.000463271s
[INFO] 10.244.2.187:35271 - 55927 "A IN motioneye.home.svc.cluster.local.cert-manager.svc.cluster.local. udp 81 false 512" NXDOMAIN qr,aa,rd 174 0.000457012s
[INFO] 10.244.2.187:35271 - 56657 "AAAA IN motioneye.home.svc.cluster.local.cert-manager.svc.cluster.local. udp 81 false 512" NXDOMAIN qr,aa,rd 174 0.000653954s
[INFO] 10.244.2.187:46899 - 29479 "A IN motioneye.home.svc.cluster.local.svc.cluster.local. udp 68 false 512" NXDOMAIN qr,aa,rd 161 0.000474049s
[INFO] 10.244.2.187:46899 - 30158 "AAAA IN motioneye.home.svc.cluster.local.svc.cluster.local. udp 68 false 512" NXDOMAIN qr,aa,rd 161 0.000671509s

This is happening to all services, not just motioneye. The IP that it is resolving to is the LAN IP address of my Ingress controller. I'm not sure why.

MotionEye service:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: motioneye
  name: motioneye
  namespace: home
spec:
  externalTrafficPolicy: Local
  ports:
  - name: motioneye-http
    protocol: TCP
    port: YYYY
  - name: motioneye-http2
    protocol: TCP
    port: XX
    targetPort: YYYY
  selector:
    app: motioneye

Service for my Ingress controller:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: ingress-nginx
  name: quickstart-ingress-nginx-controller
  namespace: cert-manager
spec:
  ports:
  - name: nginx-http
    protocol: TCP
    port: 80
  - name: nginx-https
    protocol: TCP
    port: 443
  loadBalancerIP: 10.7.9.10
  type: LoadBalancer

Kube System namespace:

$ kbc get pods -n kube-system
NAME                              READY   STATUS    RESTARTS         AGE
coredns-78fcd69978-9xj4r          1/1     Running   0                9m47s
coredns-78fcd69978-wctr7          1/1     Running   0                9m47s
etcd-k-m-001                      1/1     Running   57 (2d2h ago)    252d
kube-apiserver-k-m-001            1/1     Running   48 (2d2h ago)    252d
kube-controller-manager-k-m-001   1/1     Running   29 (2d2h ago)    252d
kube-flannel-ds-bgdgz             1/1     Running   2 (2d2h ago)     2d4h
kube-flannel-ds-cxhpv             1/1     Running   1 (2d2h ago)     2d4h
kube-flannel-ds-lh4qb             1/1     Running   2 (2d2h ago)     2d4h
kube-flannel-ds-r2x6w             1/1     Running   2 (2d2h ago)     2d4h
kube-flannel-ds-sfwvs             1/1     Running   2 (2d2h ago)     2d4h
kube-flannel-ds-wzj6r             0/1     Pending   0                2d2h
kube-proxy-9xxkm                  1/1     Running   15 (2d2h ago)    171d
kube-proxy-kfcql                  1/1     Running   23 (2d2h ago)    252d
kube-proxy-l886v                  1/1     Running   12 (66d ago)     171d
kube-proxy-nt4dp                  1/1     Running   30 (2d2h ago)    252d
kube-proxy-nvk5b                  1/1     Running   22 (2d2h ago)    252d
kube-proxy-t55sz                  1/1     Running   10 (2d2h ago)    171d
kube-scheduler-k-m-001            1/1     Running   43 (2d2h ago)    252d
metrics-server-5cd859f5c-jzff7    1/1     Running   155 (2d2h ago)   249d

I'm using Metal-LB for the load balancer.

Any help is appreciated!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source