Skip to main content

Overview

The Node-Local DNS add-on runs a small DNS cache on every node in the cluster as a DaemonSet. Pods send their DNS queries to the local cache on the node instead of reaching the central cluster DNS service over the network, which:
  • Lowers DNS latency — most lookups are answered from the on-node cache.
  • Reduces load on cluster DNS — only cache misses are forwarded to the cluster DNS service.
  • Avoids UDP conntrack races — a well-known source of intermittent 5-second DNS timeouts in Kubernetes.
The cache listens on the standard link-local address (169.254.20.10), caches in-cluster (cluster.local) and reverse-lookup zones, and forwards everything else to the cluster DNS service. It also exposes Prometheus metrics, which the Metrics add-on collects when enabled. This add-on is recommended alongside the KubeVirt add-on, where reliable in-cluster name resolution for VM guests matters most.

Supported Providers

  • All providers are supported

How to Enable

The Node-Local DNS add-on can be enabled during cluster creation or at any time thereafter. It takes no configuration — enabling it is a simple toggle.

At Cluster Creation

  • Through Cluster Manifest: Add the following snippet to your cluster manifest when creating the cluster:
    YAML
    spec:
      ...
      addOns:
        nodeLocalDns: {}
      ...
    
  • Using the Console: If you’re creating the cluster through the console, navigate to Add-ons, find the Node-Local DNS add-on in the list of available add-ons, and toggle it on.

After Cluster Creation

If the Node-Local DNS add-on was not enabled during cluster creation, you can still enable it using either of the following methods:

Using Manifest

To enable the Node-Local DNS add-on after cluster creation, add the following to your cluster’s YAML manifest:
  • Direct Edit & Apply: Navigate to your cluster in the Console, and use the Edit & Apply option.
  • CLI Application: Apply the entire manifest using the cpln apply >_ command or through the cpln CLI.
    YAML
    spec:
      ...
      addOns:
        nodeLocalDns: {}
      ...
    

Using the UI

  1. Navigate to the Control Plane Console: Open Control Plane Console.
  2. Select Your Kubernetes Cluster: In the Control Plane Console, go to Kubernetes in the left sidebar, and click on the cluster you wish to configure.
  3. Enable the Add-on: Choose Add-ons, find the Node-Local DNS add-on in the list, and toggle it on.
Once the add-on reconciles, the per-node cache is rolled out as a DaemonSet across the cluster’s nodes. No changes to your workloads are required — pods automatically use the local cache for DNS resolution.

Next steps

KubeVirt (VM Workloads)

Recommended companion add-on for VM DNS

Metrics

Collect the cache’s Prometheus metrics

mk8s Overview

Managed Kubernetes basics