Skip to content

Intermittent DNS issues (ever 20 secs) #29

@ed-pai

Description

@ed-pai

UPDATE: This was causes by GitLab ingresses (deployed via helm) to flap the public IPs, causing KPC to reconcile ever 20 secs and restart unbound service. This was an environment problem, not a problem with the controller.

It looks like this repo isn't maintained anymore, but creating this issue in case anyone struggles with the same issues I've been having for the past year. I use PFSense and run a few different K8S clusters for different services and testing. I've got this controller deployed in a couple of the clusters.

TL;DR:

This controller causes the PFSense DNS to restart multiple times a minute, which causes DNS to be unavailable for a few seconds. Recommend not using this controller and instead going with ExternalDNS or something like that.

Problem

I found out today that the intermittent DNS issues I've been having for the past year were caused by the way the controller does XMLRPC updates. In my cluster, they happen every ~18-22 secs (as seen in the system logs):

Dec  4 14:53:59 pfSense1 php-fpm[2348]: /xmlrpc.php: Configuration Change: (system)@172.16.10.36: Merged in config (unbound sections) from XMLRPC client.
Dec  4 14:54:17 pfSense1 php-fpm[71702]: /xmlrpc.php: Configuration Change: (system)@172.16.10.36: Merged in config (unbound sections) from XMLRPC client.

This causes the unbound service to restart approx 4 secs after the update:

Dec  4 14:54:03 pfSense1 unbound[11652]: [11652:0] notice: Restart of unbound 1.23.0.
Dec  4 14:54:21 pfSense1 unbound[71471]: [71471:0] notice: Restart of unbound 1.23.0.

There were hundreds of these logs. The DNS Services takes a few secs to fully restart and doesn't respond to requests during that time. The more of the controllers you deploy in your environment, the worse the problem gets.

Possible Alternatives

The Kubernetes SIG External-DNS has an Unbound Webhook that is capable of remotely updating PFSense. This requires enabling unbound-remote and opening the port externally on the PFSense, but it's doable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions