Wie konfiguriere ich /etc/resolv.conf in meinen Kube-Flannel-DS-Pods eines K8s-Clusters?

Wie konfiguriere ich /etc/resolv.conf in meinen Kube-Flannel-DS-Pods eines K8s-Clusters?

Ich betreibe einen Kubernetes-Cluster (Bare Metal; v1.23) mit einem Master und drei Workern. Ich verwende Flannel (v0.19.2) für das Pod-Netzwerk.

In meinem Syslog sehe ich Fehler wie: Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 46.38.252.230 46.38.225.230 2a03:4000:8000::fce6, die ihren Ursprung in den kube-flannel-dsPods haben. Innerhalb der Pods sehe ich:

$ cat /etc/resolv.conf

nameserver 46.38.252.230
nameserver 46.38.225.230
nameserver 2a03:4000:0:1::e1e6
search

Da mehr als drei Zeilen vorhanden sind, tritt die Fehlermeldung auf. Ich bin mir jedoch nicht sicher, wie ich das Problem lösen soll, da ich nicht weiß, wie diese Conf-Datei generiert wird.

Beim Erstellen des K8s-Clusters habe ich Folgendes getan:kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.19.2/Documentation/kube-flannel.yml >> pod_network_setup.txt


Aktualisieren

Die Arbeitsknoten laufen auf einer Ubuntu 22.04-Maschine.

Katze /etc/resolv.conf

# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0 trust-ad
search .

Resolvctl-Status

Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 46.38.252.230
       DNS Servers: 46.38.252.230 46.38.225.230 2a03:4000:8000::fce6 2a03:4000:0:1::e1e6

Link 2 (eth0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 3 (docker0)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Antwort1

Wenn dnsPolicyauf gesetzt ist Default, erben Kubernetes-Pods die DNS-Konfiguration von den Worker-Knoten, auf denen sie sich befinden.

Abhängig von Ihrer Linux-Workerdistribution und anderen Details finden Sie diese Konfiguration möglicherweise hier:

  • /etc/resolv.conf

  • /etc/dhcp/dhclient.conf

  • /etc/sysconfig/network-scripts/ (Fedora, Centos und RHEL)

verwandte Informationen