kube-dnsサービスの確認
Kubernetesでは、ポッドはDNS解決のために設定されたネームサーバーを使用します。ネームサーバーの設定は/etc/resolv.confに保存され、デフォルトではKubernetesがすべてのポッドに対してkube-dnsサービスのClusterIPをネームサーバーとして設定します。
ステップ1 - ポッドのresolv.confを確認する
まず、ポッド内のネームサーバー設定を確認しましょう:
~$kubectl exec -it -n catalog catalog-mysql-0 -- cat /etc/resolv.conf
search catalog.svc.cluster.local svc.cluster.local cluster.local us-west-2.compute.internal
nameserver 172.20.0.10
options ndots:5
ステップ2 - kube-dnsサービスのIPを確認する
次に、このIPがkube-dnsサービスのClusterIPと一致することを確認しましょう:
~$kubectl get svc kube-dns -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 172.20.0.10 <none> 53/UDP,53/TCP,9153/TCP 22d
ネームサーバーのIPはkube-dnsサービスのClusterIPと一致しており、これは正しい設定です。
ステップ3 - kube-dnsサービスのエンドポイントを確認する
次に、kube-dnsサービスがCoreDNSポッドにトラフィックを適切にルーティングするように設定されていることを確認します:
~$kubectl describe svc kube-dns -n kube-system
...
IP: 172.20.0.10
IPs: 172.20.0.10
Port: dns 53/UDP
TargetPort: 53/UDP
Endpoints: 10.42.122.16:53,10.42.153.96:53
Port: dns-tcp 53/TCP
TargetPort: 53/TCP
Endpoints: 10.42.122.16:53,10.42.153.96:53
...
これらのエンドポイントをCoreDNSポッドのIPと比較します:
~$kubectl get pod -l k8s-app=kube-dns -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP ...
CoreDNS-787cb67946-72sqg 1/1 Running 0 18h 10.42.122.16 ...
CoreDNS-787cb67946-gtddh 1/1 Running 0 22d 10.42.153.96 ...
サービスエンドポイントはCoreDNSポッドのIPと一致しており、サービス設定が適切であることを確認できます。
注記
あなたの環境では異なるIPが表示されるでしょう。重要なのはサービスエンドポイントがCoreDNSポッドのIPと一致していることです。