- 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.local
example.svc.cluster.local
example.cluster.local
example.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
で自分で設定をする