k8s: coredns が loop 検出して進まない


参考資料

Debugging DNS Resolution Known issues (kubernetes.io)

TL;DR

/etc/resolv.confのDNSサーバIPアドレスが有効かチェックしましょう。
systemdが絡むと、色々ややこしそうです → Known issues (kubernetes.io)

環境情報

  • k8s: v1.14.5
  • ホストOS: Ubuntu 16.04

状況

以下のようなログが出て、corednsが止まります。
(kubectl logs coredns... -n kube-systemでチェック)

plugin/loop: Loop (127.0.0.1:55953 -> :1053) detected for zone ".", see https://coredns.io/plugins/loop#troubleshooting. Query: "HINFO 4547991504243258144.3688648895315093531."

解決

/etc/resolv.confの指すDNSサーバのIPアドレスがダメでした。

# nameserver 127.0.0.53  # ← こっちがダメ
nameserver 8.8.8.8       # ← こっちを有効に

kubeletを再起動して、その後にクラスタを再起動しました。
(クラスタ再起動はsudo kubeadm reset後にsudo kubeadm init ...を順次実行)

sudo systemctl restart kubelet

複数の環境でk8sを動かしているので、別々の原因で障害が起きて、時間はかかるが勉強になります。。
公式サイトのTasks (kubernetes.io)でk8sの機能を試したいだけなのですが(;・ω・)=3