Understanding and Debugging DNS in Kubernetes Clusters

Watch talk on YouTube Slides

Baseline

DNS Components

graph LR
    Application-->NodeLocalDNS-->CoreDNS-->Upstream

Problems

  • Many hidden systems
  • Not easy to trace across clusters

Tools

Demo queries are located in the slides and were executed during the stream

CoreDNS Log Plugin

  • Core-Plugin (just needs to be activated)
  • Logs all requests to stdout

Hubble

  • Cilium observability needs cilium l7 proxy, runs as deamonset
  • Needs CiliumNetworkPolicies for AppPod and CoreDNS
  • Metrics, UI and cli with jq (and protocol filter)

Inspector Gadget

  • Toolset for Kubernetes and Linux that can be customized
  • Runns as daemonset or debug pod - gadgets are distributed as containers (via artifactorhub)
  • DNS-Gadget: Trace via ebpf, post process with wasm

Overview

  • CoreDNS: Great for initial, nut only CoreDNS
  • Hubble: Compact overview, but cilium needed with special configs
  • Inspector Gadget: Rich DNS traces, limited tcp support