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 CLI、Azure PowerShell、または Azure portal を使用して作成できます。
- 実行している CoreDNS のバージョンを確認します。 構成値は、バージョン間で変更される可能性があります。
プラグインのサポート
組み込みの CoreDNS プラグインはすべてサポート対象です。 アドオン/サード パーティ製のプラグインはサポート対象外です。
重要
この記事のような構成を作成する場合、 data セクションで指定する名前は、 .server または .overrideで終わる必要があります。 この名前付け規則は、kubectl get configmaps --namespace=kube-system coredns --output yaml コマンドを使用して表示できる既定の AKS CoreDNS ConfigMap で定義されています。
DNS 名の書き換えを構成する
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 サーバーは、書き換えられたドメイン名を解決できる必要があります。
kubectl apply configmapコマンドを使用して ConfigMap を作成し、YAML マニフェストの名前を指定します。kubectl apply -f corednsms.yamlkubectl get configmapsコマンドを使用して、カスタマイズが適用されたことを確認します。kubectl get configmaps --namespace=kube-system coredns-custom -o yamlkubectl rollout restartコマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。kubectl --namespace kube-system rollout restart deployment coredns
ネットワーク トラフィックの転送サーバーを指定する
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 }kubectl apply configmapコマンドを使用して ConfigMap を作成します。kubectl apply -f corednsms.yamlkubectl rollout restartコマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。kubectl --namespace kube-system rollout restart deployment coredns
カスタム ドメインを使用する
内部でのみ解決できるカスタム ドメインを構成することもできます。 たとえば、有効な最上位ドメインではないカスタム ドメイン puglife.local を解決できます。 カスタム ドメインの ConfigMap がないと、AKS クラスターではアドレスを解決できません。
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 }kubectl apply configmapコマンドを使用して ConfigMap を作成します。kubectl apply -f corednsms.yamlkubectl rollout restartコマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。kubectl --namespace kube-system rollout restart deployment coredns
スタブ ドメインの構成
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 }kubectl apply configmapコマンドを使用して ConfigMap を作成し、指定します。kubectl apply -f corednsms.yamlkubectl rollout restartコマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。kubectl --namespace kube-system rollout restart deployment coredns
カスタムホストからIPへのマッピングを追加する
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 }kubectl apply configmapコマンドを使用して ConfigMap を作成します。kubectl apply -f corednsms.yamlkubectl rollout restartコマンドを使用して、ローリング 再起動を実行して ConfigMap を再読み込みし、Kubernetes Scheduler がダウンタイムなしで CoreDNS を再起動できるようにします。kubectl --namespace kube-system rollout restart deployment coredns
次のステップ
- CoreDNS の問題をトラブルシューティングするには、 Azure Kubernetes Service (AKS) の CoreDNS に関する問題のトラブルシューティングを参照してください。
- CoreDNS の自動スケール動作の詳細については、 Azure Kubernetes Service (AKS) での CoreDNS の自動スケールに関するページを参照してください。
Azure Kubernetes Service