特定のシナリオでは、ビジネスの高度にカスタマイズされた要件により、CoreDNS を手動で管理および保守する必要があります。Alibaba Cloud Container Service for Kubernetes (ACK) クラスタは、非マネージド CoreDNS をサポートしています。これにより、カスタム CoreDNS 構成を設定できます。このトピックでは、ACK クラスタで非マネージド CoreDNS プラグインを使用する方法について説明します。
前提条件
ACK クラスタが作成されていること。詳細については、「ACK クラスタを作成する」をご参照ください。ACK クラスタに CoreDNS プラグインがインストールされている場合は、このトピックで説明されているインストール手順に従って、マネージド CoreDNS プラグインをアンインストールしてください。
ACK クラスタを作成するときは、[コンポーネント構成] セクションで [サービスディスカバリ] パラメータを [無効] に設定する必要があります。
非マネージド CoreDNS プラグインはオープンソースの標準プラグインです。プラグインのリソースコストと O&M はお客様の責任となります。CoreDNS プラグインの使用時に発生する可能性のある問題を解決できます。
デフォルトでは、ACK によって提供されるプラグインテンプレートは、アンチアフィニティメカニズムを使用してゾーン全体にポッドを分散します。ACK にシングルゾーンを構成した場合、CoreDNS の 1 つのレプリカのみが想定どおりに実行できます。ディザスタリカバリと可用性を確保するために、複数のゾーンを構成することをお勧めします。
インストール手順
ACK コンソールにログオンします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。
オプション。[ネットワーク] タブをクリックし、[coredns](マネージド)を見つけて、[アンインストール] をクリックします。CoreDNS(マネージド)が見つからない場合は、この手順をスキップしてください。
警告CoreDNS (マネージド) をアンインストールすると、クラスタのドメイン ネーム システム ( DNS ) 解決機能が使用できなくなります。 CoreDNS (マネージド) をアンインストールする前に、クラスタにビジネストラフィックが存在しないことを確認してください。
[ネットワーク] タブをクリックし、CoreDNS を見つけて、[インストール] をクリックします。

ビジネス要件に基づいてパラメーターを構成します。設定を確認したら、 [OK] をクリックします。
重要CoreDNS をインストールするときに [cpurequest] パラメーターを構成しないと、ACS ポッドの使用可能な CPU リソースは 250 ミリコアのみになります。ポッドへの過剰なパフォーマンス負荷による例外を防ぐために、[cpurequest] パラメーターの値を構成することをお勧めします。

kubectl を使用してクラスターに接続し、次のコマンドを実行してポッドをクエリします。
kubectl get po -n kube-system | grep coredns予期される出力:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-85dc775876-sh558 1/1 実行中 0 3 分 35 秒 kube-system coredns-85dc775876-xzcpp 1/1 実行中 0 3 分 35 秒CoreDNS ポッドが起動されます。これは、アンマネージド CoreDNS プラグインがインストールされていることを示します。
ACS クラスター内のポッドで次のコマンドを実行して、クラスターの DNS 解決機能が想定どおりに動作するかどうかを確認します。
nslookup kubernetes予期される出力:
サーバー: 10.0.0.10 アドレス: 10.0.0.10#53 名前: kubernetes.default.svc.cluster.local アドレス: 10.0.0.1出力は、ドメイン名解決が成功し、CoreDNS が想定どおりに実行されていることを示しています。
カスタム CoreDNS 構成
ConfigMap として ACK クラスタに保存されている Corefile 構成を変更することで、カスタム CoreDNS 構成を設定できます。Corefile 構成を直接変更して、CoreDNS 構成を変更できます。例:
次のコマンドを実行して、CoreDNS の Corefile 構成を変更します。
kubectl -n kube-system edit cm coredns次の内容に基づいて、CoreDNS の Corefile 構成を変更します。
Corefile: | .:53 { errors health { lameduck 15s } ready kubeapi k8s_event { level info error warning } kubernetes cluster.local in-addr.arpa ip6.arpa { pods verified ttl 30 fallthrough in-addr.arpa ip6.arpa } prometheus :9153 # forward . /etc/resolv.conf { # resolv.conf ファイル内の転送 DNS サーバのデフォルト値を 192.168.1.10 に変更します。 forward . 192.168.1.10 { prefer_udp } cache 30 log loop reload loadbalance }変更後、CoreDNS はクラスター外ドメイン名を IP アドレスが
192.168.1.10の DNS サーバに自動的に転送します。ビジネス要件に基づいて DNS サーバの IP アドレスを変更できます。
関連情報
ビジネス要件に基づいて、非マネージド CoreDNS プラグインの構成を変更できます。詳細については、「非マネージド CoreDNS を構成する」をご参照ください。
ACK クラスタ内のポッドの DNS ポリシーと DNS 解決を構成する方法の詳細については、「DNS 解決ポリシーとキャッシュポリシー」をご参照ください。
CoreDNS 関連の問題のトラブルシューティング方法の詳細については、「DNS のトラブルシューティング」をご参照ください。