地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【k8s】nslookup: can't resolve '(null)': Name does not resolve

作成したpodが外部の名前を引こうとした際に出力されるメッセージ

/ # nslookup google.com
nslookup: can't resolve '(null)': Name does not resolve

nslookup: can't resolve 'kubernetes.default': Try again

/ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=113 time=10.217 ms
64 bytes from 8.8.8.8: seq=1 ttl=113 time=9.638 ms

pingは通るのにって言うケースで見たいのは以下。resolve.conf。ここで指定しているのはkube-dnsであって外部の名前を解決するようのものでは無いので名前解決は失敗する

/ # cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

(⎈ |kubernetes-admin@kubernetes:default) [root@k8s-master ~]# kubectl get svc -A -l k8s-app=kube-dns
NAMESPACE     NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
kube-system   kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   26h

解決方法

そのPodに対するDNSサーバーとして使われるIPアドレスをmanifestに書いてあげれば解決する。

      dnsPolicy: "None"
      dnsConfig:
        nameservers:
          - 8.8.8.8

kubernetes.io