4.2.6 外部ホスト名解決のためのCoreDNSの構成
Kubernetesクラスタがインストールに必要なホスト名を解決できるように、クラスタでCoreDNSを構成する必要があります。
次のようにCoreDNSを構成する必要があります:
- プロキシ・サーバー、Kubernetesノード、OAM OAuthサーバー、Oracle Databaseおよびコンテナ・イメージ・レジストリのhostname.domainとIPアドレスを追加します。または、
- プロキシ・サーバー、Kubernetesノード、OAM OAuthサーバー、Oracle Databaseおよびコンテナ・イメージ・レジストリのhostname.domainとIPアドレスを解決できるドメイン・ネーム・サーバー(DNS)を追加します。
CoreDNSへの個々のホスト名およびIPアドレスまたはDNSの追加
- 次のコマンドを実行して、coredns configmapを編集します:
これにより、kubectl edit configmap/coredns -n kube-system
vi
のような編集セッションに移動します。 - 個々のホスト名とIPアドレスを追加する場合は、定義するホストごとに1つずつエントリを含めたhostsセクションをファイルに追加します。たとえば:
または、ドメイン・ネーム・サーバー(DNS)を追加する場合は、DNSのセクションを追加します:apiVersion: v1 data: Corefile: | .:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } prometheus :9153 forward . /etc/resolv.conf { max_concurrent 1000 } cache 30 loop reload loadbalance hosts custom.hosts example.com { 1.1.1.1 oam.example.com 1.1.1.2 db.example.com 1.1.1.3 container-registry.example.com 1.1.1.4 masternode.example.com 1.1.1.5 worker1.example.com 1.1.1.6 worker2.example.com fallthrough } } kind: ConfigMap metadata: creationTimestamp: "2021-11-09T14:08:31Z" name: coredns namespace: kube-system resourceVersion: "25242052" uid: 21e623cf-e393-425a-81dc-68b1b06542b4
apiVersion: v1 data: Corefile: | .:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } prometheus :9153 forward . /etc/resolv.conf { max_concurrent 1000 } cache 30 loop reload loadbalance } example.com:53 { errors cache 30 forward . <DNS_IPADDRESS> } kind: ConfigMap metadata: creationTimestamp: "2021-11-09T14:08:31Z" name: coredns namespace: kube-system resourceVersion: "25242052" uid: 21e623cf-e393-425a-81dc-68b1b06542b4
- ファイルを保存します(
!wq
)。 - CoreDNSを再起動します:
- 次のコマンドを実行して、corednsを再起動します:
kubectl rollout restart -n kube-system deploy coredns
- 次のコマンドを実行して、corednsポッドが問題なく再起動されることを確認します:
エラーが表示された場合は、次のコマンドを使用してログを表示してから、coredns configmapを再度編集して修正します:kubectl get pods -n kube-system
kubectl logs -n kube-system coredns--<ID>
- 次のコマンドを実行して、corednsを再起動します:
DNS解決の検証
ほとんどのコンテナには、行った構成変更が正しいことを確認できる組込みネットワーク・ツールがありません。変更を検証する最も簡単な方法は、alpineなどのネットワーク・ツールがインストールされている軽量のコンテナを使用することです。
- 次のコマンドを実行して、alpineコンテナを実行します:
これにより、コンテナ内のBashシェル内に移動します。kubectl run -i --tty --rm debug --image=docker.io/library/alpine:latest --restart=Never -- sh
- コンテナ内で、データベース、OAM OAuthサーバー、コンテナ・イメージ・レジストリなどに対して
nslookup
を実行できるようになります。次に例を示します:nslookup oam.example.com