k8s クラスターの kube-flannel-ds ポッドで /etc/resolv.conf を構成するにはどうすればいいですか?

k8s クラスターの kube-flannel-ds ポッドで /etc/resolv.conf を構成するにはどうすればいいですか?

私はマスター 1 台とワーカー 3 台で Kubernetes クラスター (ベアメタル、v1.23) を実行しています。ポッド ネットワークには flannel (v0.19.2) を使用しています。

syslog に次のようなエラーが表示されます: 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、これはポッドに原因がありますkube-flannel-ds。ポッドの内部には次のエラーが表示されます:

$ cat /etc/resolv.conf

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

3 行以上あるため、エラー メッセージが表示されます。ただし、この conf ファイルがどのように生成されるかわからないため、これを解決する方法がよくわかりません。

k8s クラスターの作成時に次の操作を実行しました。kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.19.2/Documentation/kube-flannel.yml >> pod_network_setup.txt


アップデート

ワーカーノードは Ubuntu 22.04 マシン上で実行されています。

/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 .

解決ステータス

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

答え1

dnsPolicyが に設定されている場合Default、Kubernetes ポッドは、そのポッドが存在するワーカーノードから DNS 構成を継承します。

ワーカー Linux ディストリビューションやその他の詳細に応じて、その構成は次の場所にあります。

  • conf ファイル

  • dhclient.conf は、

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

関連情報