- EKSコンテナ移行のトラブル事例:推測するな計測せよ -CoreDNS暴走編- - MonotaRO Tech Blog
- Kubernetes と名前解決
- EKSのCoreDNSを安定させるための取り組み - Stanby Tech Blog
- Kubernetesのキャッシュネームサーバとリゾルバ | IIJ Engineers Blog
- Amazon EKS での DNS の障害のトラブルシューティング | AWS re:Post
Podの /etc/resolve.conf の中身をみる
podに入って見てみると、以下のような設定がされている。
search <namespace>.svc.cluster.local svc.cluster.local cluster.local ap-northeast-1.compute.internal
nameserver 172.20.0.10
options ndots:5
nameserverはCoreDNSのIPアドレスsearchに書かれたサーチリストはドットの数がndotsの値以下のドメイン名を名前解決するときにsuffixで順番に付与されるexampleというホスト名は、example.default.svc.cluster.localexample.svc.cluster.localexample.cluster.localexample.example.comと問い合わせた後でexampleを問い合わせる- ただし、
example.と末尾にdotがついていればこれをFQDNとみなす
これによって何が起こるか
www.foo.bar.com といったドメインを名前解決するのに、無駄なクエリが4回発行される。
設定変更する
これはPodの spec.dnsConfig や spec.dnsPolicy で設定できる。
DNS for Services and Pods | Kubernetes
DNS Policy
Warning
dnsPolicyのデフォルト値は
DefaultではなくてClusterFiest
Default: Podが動いているNodeのresolve.confを引き継ぐClusterFirst: cluster domain suffixにマッチしないドメイン(www.kubernetes.ioなど)に対するDNS queryは上流のnameserverに流す。クラスタドメインがサーチリストに設定されるNone: 何も設定されないので、dnsConfgで自分で設定をする