ビジネス要件の高度なカスタマイズに対応するため、特定のシナリオでは CoreDNS を手動で管理・保守する必要があります。Container Compute Service (ACS) クラスターは、アンマネージド CoreDNS をサポートしています。これにより、カスタムの CoreDNS 設定を構成できます。このトピックでは、ACS クラスターでアンマネージド CoreDNS プラグインを使用する方法について説明します。
前提条件
ACS クラスターが作成されていること。詳細については、「ACS クラスターの作成」をご参照ください。ACS クラスターに CoreDNS プラグインがインストールされている場合は、このトピックで説明するインストール手順に従って、マネージド CoreDNS プラグインをアンインストールしてください。
-
新しいクラスターを作成する際、コンポーネント設定 > サービスディスカバリー に移動し、無効化 を選択してください。
アンマネージド CoreDNS プラグインは、オープンソースの標準プラグインです。このプラグインのリソースコストと運用保守 (O&M) は、お客様の負担となります。CoreDNS プラグインの使用中に発生する可能性のある問題は、お客様にて解決する必要があります。
デフォルトでは、ACS が提供するプラグインテンプレートは、アンチアフィニティメカニズムを使用して、複数のゾーンに Pod を分散させます。ACS に単一のゾーンを設定した場合、CoreDNS のレプリカは 1 つしか正常に実行できません。災害復旧と可用性を確保するために、複数のゾーンを設定することを推奨します。
インストール手順
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、操作 > アドオン を選択します。
-
(オプション) ネットワーク タブで CoreDNS (
Managedラベル付き) を見つけ、[Uninstall] をクリックします。コンポーネントリストに CoreDNS (Managed) が表示されない場合は、この手順をスキップしてください。警告CoreDNS (Managed) をアンインストールすると、クラスターのドメインネームシステム (DNS) 名前解決機能が利用できなくなります。CoreDNS (Managed) をアンインストールする前に、クラスター内にビジネストラフィックが存在しないことを確認してください。
-
ネットワーク タブで、CoreDNS (
Managedラベルなし) を見つけ、インストール をクリックします。 -
要件に基づいてパラメーターを設定します。設定を確認したら、[OK] をクリックしてコンポーネントをインストールします。
重要インストール時に CpuRequest パラメーターを設定しない場合、ACS クラスター内の対応する Pod で使用可能な CPU リソースは 250 m のみになります。Pod への過剰な負荷によるクラスターの異常を避けるため、CpuRequest に適切な値を設定することを推奨します。
設定フォームには、MemoryRequest (デフォルト:
100Mi)、CpuRequest (デフォルト:100m)、MemoryLimit (デフォルト:2Gi)、CpuLimit (デフォルト: 空) などのパラメーターが含まれます。NodeSelector の場合、デフォルトのキーはkubernetes.io/osで、値はlinuxです。Tolerations はデフォルトで空であり、必要に応じて設定できます。 kubectl を使用してクラスターに接続し、次のコマンドを実行して Pod を照会します:
kubectl get po -n kube-system|grep coredns予想される出力:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-85dc775876-sh558 1/1 Running 0 3m35s kube-system coredns-85dc775876-xzcpp 1/1 Running 0 3m35sCoreDNS Pod が起動しています。これは、アンマネージド CoreDNS プラグインがインストールされたことを示します。
-
ACS クラスター内の Pod で次のコマンドを実行し、クラスターの DNS 名前解決機能が正常に動作するかどうかを確認します:
nslookup kubernetes予想される出力:
Server: 10.0.0.10 Address: 10.0.0.10#53 Name: kubernetes.default.svc.cluster.local Address: 10.0.0.1この出力は、ドメイン名解決が成功し、CoreDNS が正常に実行されていることを示します。
CoreDNS のカスタム設定
Corefile の設定を変更することで、CoreDNS のカスタム設定を構成できます。Corefile の設定は、ConfigMap として ACS クラスターに保存されます。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 { # forward DNS サーバーを resolv.conf のデフォルトから 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 の設定」をご参照ください。
ACS クラスター内の Pod の DNS 名前解決ポリシーとキャッシュポリシーを設定する方法については、「DNS 名前解決ポリシーとキャッシュポリシー」をご参照ください。
CoreDNS に関連する問題のトラブルシューティング方法については、「DNS のトラブルシューティング」をご参照ください。