Alibaba DNS Cache は、Container Compute Service (ACS) クラスター向けのカーネルベースの DNS キャッシュコンポーネントです。侵入不要で、パフォーマンス専有型、低オーバーヘッドです。DNSConfig を変更することなく、ノード間の DNS トラフィックを削減し、ACS Pod の DNS クエリのレイテンシーを低減します。
Alibaba DNS Cache を使用する理由
ローカル DNS キャッシュがない場合、高い DNS クエリレートを持つ Pod は、異なるノード上の DNS サービスにリクエストを送信する可能性があります。これにより、ネットワークのラウンドトリップレイテンシーが増加し、CoreDNS の負荷が増大します。Alibaba DNS Cache は、以下の方法でこの問題に対処します。
Pod レベルでキャッシュされた応答を提供し、繰り返されるアップストリームルックアップを排除します。
クエリがノードを離れる前にインターセプトすることで、ノード間の DNS トラフィックを削減します。
透過的に動作します。アプリケーションの変更や DNSConfig の修正は不要です。
仕組み
Alibaba DNS Cache は、アプリケーション Pod からの DNS クエリをインターセプトし、キャッシュされた応答を提供します。キャッシュミスが発生した場合、DNS ゾーン構成に基づいてクエリをルーティングします。
直接アップストリームパス: クエリは直接アップストリーム DNS サービスに送信されます。Alibaba DNS Cache は結果をキャッシュし、アプリケーションに返します。
CoreDNS パス: クエリは CoreDNS に送信されます。CoreDNS でもミスが発生した場合、CoreDNS はアップストリーム DNS サービスにクエリを送信し、応答をキャッシュして Alibaba DNS Cache に返します。その後、Alibaba DNS Cache はそれをアプリケーションに返します。
制限事項
| 制限事項 | 詳細 |
|---|---|
| クラスタータイプ | ACS クラスターのみ。ACS Pod にのみ適用されます。 |
| サポートされているレコードタイプ | A、AAAA、および CNAME レコード |
| サポートされているトランスポート | UDP ベースの DNS クエリのみ |
| 最大応答サイズ | 256 バイト |
Alibaba DNS Cache のインストール
前提条件
開始する前に、以下があることを確認してください。
ACS クラスター
クラスター管理権限を持つ ACS コンソールへのアクセス
コンポーネントのインストール
「ACS コンソール」にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
「クラスター」ページで、管理するクラスターの ID をクリックします。左側のナビゲーションウィンドウで、「操作」 > 「アドオン」を選択します。
[アドオン] ページで、[ネットワーキング] タブをクリックし、[Alibaba DNS キャッシュ] コンポーネントを探します。
[Alibaba DNS Cache] カードで、[インストール] をクリックします。表示されるダイアログボックスで、[OK] をクリックします。Alibaba DNS Cache がインストールされると、ACS Pod から開始された DNS クエリが高速化されます。追加の操作は不要です。
重要Alibaba DNS Cache をインストールすると、
kube-system名前空間にblazing-dnsという名前の ConfigMap が作成されます。この ConfigMap を変更または削除しないでください。
インストールの検証
DNS キャッシュアクセラレーションは、コンポーネントのインストール後に作成された Pod にのみ適用されます。既存の Pod は影響を受けません。
次のコマンドを実行して、新しい Pod で DNS キャッシュアクセラレーションが有効になっていることを確認します。
kubectl get pod -o=jsonpath='{.items[?(@.metadata.annotations.network\.alibabacloud\.com/enable-dns-cache=="true")].metadata.name}' -A出力に Pod 名が一覧表示される場合、それらの Pod では DNS キャッシュアクセラレーションが有効になっています。network.alibabacloud.com/enable-dns-cache: "true" アノテーションがない Pod は高速化されません。
Alibaba DNS Cache のアンインストール
アンインストールする前に、実行中の Pod が DNS キャッシュアクセラレーションを使用していないことを確認してください。
ステップ 1: DNS キャッシュアクセラレーションが有効になっている Pod の確認
jq がインストールされているかどうかに応じて、次のいずれかのコマンドを実行します。
`jq` なし:
kubectl get pod -o=jsonpath='{.items[?(@.metadata.annotations.network\.alibabacloud\.com/enable-dns-cache=="true")].metadata.name}' -A`jq` あり:
kubectl get pod -o=jsonpath='{.items[?(@.metadata.annotations.network\.alibabacloud\.com/enable-dns-cache=="true")]}' -A | jq -rc ".metadata.namespace,.metadata.name"出力が空の場合、ステップ 3 にスキップします。Pod がリスト表示される場合、ステップ 2 に進みます。
ステップ 2: 既存の Pod の DNS キャッシュアクセラレーションの無効化
[クラスター] ページで、管理するクラスターの ID をクリックします。左側のナビゲーションウィンドウで、[設定] > [ConfigMap] を選択します。
[ConfigMap] ページで、名前空間として kube-system を選択します。blazing-dns の [操作] 列で、[編集] をクリックします。表示されるパネルで、[config] を
enabled: falseに設定します。ステップ 1 を繰り返し、続行する前に Pod が返されないことを確認します。
ステップ 3: コンポーネントのアンインストール
[クラスター] ページで、管理するクラスターの ID をクリックします。左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。
[アドオン] ページで、[ネットワーク] タブをクリックします。[Alibaba DNS Cache] カードで、[アンインストール] をクリックします。表示されるメッセージで、[OK] をクリックします。