すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:ACS クラスタで非マネージド CoreDNS を使用する

最終更新日:Jan 27, 2025

特定のシナリオでは、ビジネスの高度にカスタマイズされた要件により、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 つのレプリカのみが想定どおりに実行できます。ディザスタリカバリと可用性を確保するために、複数のゾーンを構成することをお勧めします。

インストール手順

  1. ACK コンソールにログオンします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. オプション。[ネットワーク] タブをクリックし、[coredns](マネージド)を見つけて、[アンインストール] をクリックします。CoreDNS(マネージド)が見つからない場合は、この手順をスキップしてください。

    image

    警告

    CoreDNS (マネージド) をアンインストールすると、クラスタのドメイン ネーム システム ( DNS ) 解決機能が使用できなくなります。 CoreDNS (マネージド) をアンインストールする前に、クラスタにビジネストラフィックが存在しないことを確認してください。

  4. [ネットワーク] タブをクリックし、CoreDNS を見つけて、[インストール] をクリックします。

    image

  5. ビジネス要件に基づいてパラメーターを構成します。設定を確認したら、 [OK] をクリックします。

    重要

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

    image

  6. 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 プラグインがインストールされていることを示します。

  7. 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 構成を変更できます。例:

  1. 次のコマンドを実行して、CoreDNS の Corefile 構成を変更します。

    kubectl -n kube-system edit cm coredns
  2. 次の内容に基づいて、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 アドレスを変更できます。

関連情報