次の方法で共有


Azure Kubernetes Service (AKS) 用に CoreDNS をカスタマイズする

Azure Kubernetes Service (AKS) では、クラスター DNS の管理と解決に CoreDNS を使用し 、すべての 1.12.x 以降のクラスターで解決します。 AKS はマネージド サービスであるため、CoreDNS のメイン構成 (CoreFile) を変更することはできません。 代わりに、既定の設定をオーバーライドするには、Kubernetes ConfigMap を使用してください。 既定の AKS CoreDNS ConfigMaps を表示するには、kubectl get configmaps --namespace=kube-system coredns --output yaml コマンドを使用します。

この記事では、Azure Kubernetes Service (AKS) で基本的な CoreDNS カスタマイズ オプションに ConfigMaps を使用する方法について説明します。

以前は、AKS はクラスター DNS の管理と解決に kube-dns を使用しましたが、現在は非推奨になりました。 kube-dns では、Kubernetes 構成マップを介してさまざまなカスタマイズ オプションが提供されていました。 CoreDNS は、と下位互換性kube-dns。 CoreDNS を使用するには、以前のカスタマイズを更新する必要があります。

[前提条件]

  • この記事では、既存の AKS クラスターがすでにあることを前提としています。 AKS クラスターが必要な場合は、Azure CLIAzure PowerShell、または Azure portal を使用して作成できます。
  • 実行している CoreDNS のバージョンを確認します。 構成値は、バージョン間で変更される可能性があります。

プラグインのサポート

組み込みの CoreDNS プラグインはすべてサポート対象です。 アドオン/サード パーティ製のプラグインはサポート対象外です。

重要

この記事のような構成を作成する場合、 data セクションで指定する名前は、 .server または .overrideで終わる必要があります。 この名前付け規則は、kubectl get configmaps --namespace=kube-system coredns --output yaml コマンドを使用して表示できる既定の AKS CoreDNS ConfigMap で定義されています。

DNS 名の書き換えを構成する

  1. corednsms.yamlという名前のファイルを作成し、次の構成例に貼り付けます。 <___domain to be rewritten>は、必ず独自の完全修飾ドメイン名 (FQDN) に置き換えてください。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: |
        <___domain to be rewritten>.com:53 {
        log
        errors
        rewrite stop {
          name regex (.*)\.<___domain to be rewritten>\.com {1}.default.svc.cluster.local
          answer name (.*)\.default\.svc\.cluster\.local {1}.<___domain to be rewritten>.com
        }
        forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten ___domain name
        }
    

    重要

    CoreDNS サービス IP などの DNS サーバーにリダイレクトする場合、その DNS サーバーは、書き換えられたドメイン名を解決できる必要があります。

  2. kubectl apply configmap コマンドを使用して ConfigMap を作成し、YAML マニフェストの名前を指定します。

    kubectl apply -f corednsms.yaml
    
  3. kubectl get configmaps コマンドを使用して、カスタマイズが適用されたことを確認します。

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. kubectl rollout restart コマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。

    kubectl --namespace kube-system rollout restart deployment coredns
    

ネットワーク トラフィックの転送サーバーを指定する

  1. corednsms.yamlという名前のファイルを作成し、次の構成例に貼り付けます。 forward名と<___domain to be rewritten>は、必ず独自の値に置き換えてください。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        <___domain to be rewritten>.com:53 {
            forward foo.com 1.1.1.1
        }
    
  2. kubectl apply configmap コマンドを使用して ConfigMap を作成します。

    kubectl apply -f corednsms.yaml
    
  3. kubectl rollout restart コマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。

    kubectl --namespace kube-system rollout restart deployment coredns
    

カスタム ドメインを使用する

内部でのみ解決できるカスタム ドメインを構成することもできます。 たとえば、有効な最上位ドメインではないカスタム ドメイン puglife.local を解決できます。 カスタム ドメインの ConfigMap がないと、AKS クラスターではアドレスを解決できません。

  1. corednsms.yamlという名前の新しいファイルを作成し、次の構成例に貼り付けます。 カスタム ドメインと IP アドレスは、必ず独自の値で更新してください。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      puglife.server: | # You can select any name here, but it must end with the .server file extension
        puglife.local:53 {
            errors
            cache 30
            forward . 192.11.0.1  # This is my test/dev DNS server
        }
    
  2. kubectl apply configmap コマンドを使用して ConfigMap を作成します。

    kubectl apply -f corednsms.yaml
    
  3. kubectl rollout restart コマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。

    kubectl --namespace kube-system rollout restart deployment coredns 
    

スタブ ドメインの構成

  1. corednsms.yaml という名前のファイルを作成し、次の構成例を貼り付けます。 カスタム ドメインと IP アドレスは、必ず独自の値で更新してください。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        abc.com:53 {
         errors
         cache 30
         forward . 1.2.3.4
        }
        my.cluster.local:53 {
            errors
            cache 30
            forward . 2.3.4.5
        }
    
    
  2. kubectl apply configmap コマンドを使用して ConfigMap を作成し、指定します。

    kubectl apply -f corednsms.yaml
    
  3. kubectl rollout restart コマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。

    kubectl --namespace kube-system rollout restart deployment coredns
    

カスタムホストからIPへのマッピングを追加する

  1. corednsms.yaml という名前のファイルを作成し、次の構成例を貼り付けます。 IP アドレスとホスト名は、必ず独自の値で更新してください。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes
      namespace: kube-system
    data:
        test.override: | # You can select any name here, but it must end with the .override file extension
              hosts { 
                  10.0.0.1 example1.org
                  10.0.0.2 example2.org
                  10.0.0.3 example3.org
                  fallthrough
              }
    
  2. kubectl apply configmap コマンドを使用して ConfigMap を作成します。

    kubectl apply -f corednsms.yaml
    
  3. kubectl rollout restart コマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。

    kubectl --namespace kube-system rollout restart deployment coredns
    

次のステップ