4.2.6 外部ホスト名解決のためのCoreDNSの構成

Kubernetesクラスタがインストールに必要なホスト名を解決できるように、クラスタでCoreDNSを構成する必要があります。

次のようにCoreDNSを構成する必要があります:
  • プロキシ・サーバー、Kubernetesノード、OAM OAuthサーバー、Oracle Databaseおよびコンテナ・イメージ・レジストリのhostname.domainとIPアドレスを追加します。または、
  • プロキシ・サーバー、Kubernetesノード、OAM OAuthサーバー、Oracle Databaseおよびコンテナ・イメージ・レジストリのhostname.domainとIPアドレスを解決できるドメイン・ネーム・サーバー(DNS)を追加します。
ノート: 次の手順はKubernetesに汎用的なものであり、すべてのKubernetesベンダーに適用できるわけではありません。CoreDNSの構成方法については、Kubernetesベンダー固有のドキュメントを参照してください。

CoreDNSへの個々のホスト名およびIPアドレスまたはDNSの追加

  1. 次のコマンドを実行して、coredns configmapを編集します:
    kubectl edit configmap/coredns -n kube-system
    これにより、viのような編集セッションに移動します。
  2. 個々のホスト名とIPアドレスを追加する場合は、定義するホストごとに1つずつエントリを含めたhostsセクションをファイルに追加します。たとえば:
    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
    
    または、ドメイン・ネーム・サーバー(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
          }
        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
  3. ファイルを保存します(!wq)。
  4. CoreDNSを再起動します:
    1. 次のコマンドを実行して、corednsを再起動します:
      kubectl rollout restart -n kube-system deploy coredns
    2. 次のコマンドを実行して、corednsポッドが問題なく再起動されることを確認します:
      kubectl get pods -n kube-system 
      エラーが表示された場合は、次のコマンドを使用してログを表示してから、coredns configmapを再度編集して修正します:
      kubectl logs -n kube-system coredns--<ID>

DNS解決の検証

ほとんどのコンテナには、行った構成変更が正しいことを確認できる組込みネットワーク・ツールがありません。変更を検証する最も簡単な方法は、alpineなどのネットワーク・ツールがインストールされている軽量のコンテナを使用することです。
  1. 次のコマンドを実行して、alpineコンテナを実行します:
    kubectl run -i --tty --rm debug --image=docker.io/library/alpine:latest --restart=Never -- sh
    これにより、コンテナ内のBashシェル内に移動します。
  2. コンテナ内で、データベース、OAM OAuthサーバー、コンテナ・イメージ・レジストリなどに対してnslookupを実行できるようになります。次に例を示します:
    nslookup oam.example.com