Deep Dive into DNS on Linux and Kubernetes
There is a recurring joke in IT that says “it’s always DNS.” It even prompted a haiku:It's not DNSThere's no way it's DNSIt was DNSIt’s often mentioned in the context of very strange bugs or outages that seem unrelated to DNS but turn out to be related anyway because DNS is everywhere, and it can seem weird.In this short presentation, we won’t talk about a weird bug, but about a weird Kubernetes warning message—something about DNSConfigForming and “nameserver limits”. Spoilers: the error message itself is harmless, but it will give us an Ariadne thread to learn more about DNS configuration in Linux in general, and Kubernetes in particular.We’ll talk about resolv.conf, nsswitch.conf, systemd-resolved, and more. We’ll also discuss DNS configuration policies on Kubernetes and differences between glibc and musl, the system library used by the famous Alpine Linux distribution, which is extremely popular within container ecosystems.This session will equip you with the knowledge to troubleshoot DNS-related issues effectively, whether they are actually DNS-related or not.We will cover:resolv.conf: Understanding the primary DNS configuration file on Linux.nsswitch.conf: How this file determines the sources used by various services.systemd-resolved: An overview of this system service for network name resolution.DNS in Kubernetes: DNS configuration policies and best practices in Kubernetes.glibc vs musl: Differences between these libraries and their impact on DNS, particularly in container environments like Alpine Linux.About Jérôme Petazzoni:Jérôme was part of the team that built, scaled, and operated the dotCloud PAAS before it became Docker. He worked for seven years at the famous container company, wearing various hats. When he’s not busy with computers, he collects musical instruments. He can arguably play the theme of Zelda on a dozen of them.