このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
1 つ以上のノードで アマゾン EKS クラスターを起動すると、クラスターにデプロイされたノード数に関係なく、デフォルトで CoreDNS イメージの 2 つのレプリカの Deployment がデプロイされます。これらの CoreDNS ポッドはクラスター内のすべてのポッドの名前解決を行います。アプリケーションは名前解決を使用して、クラスター内のポッドとサービスに接続し、同様にクラスター外のサービスに接続します。ポッドからの名前解決 (クエリ) のリクエスト数が増えると、CoreDNS ポッドが圧倒されて速度が低下し、ポッドが処理できないリクエストが拒否される可能性があります。
CoreDNS ポッドの負荷の増加を処理するにはCoreDNS の自動スケーリングシステムを検討してください。アマゾン EKS はCoreDNS の EKS アドオンバージョンで CoreDNS デプロイの自動スケーリングを管理できます。この CoreDNS オートスケーラーはノード数や CPU コア数など、クラスターの状態を継続的にモニタリングします。この情報に基づいて、コントローラーは EKS クラスター内の CoreDNS デプロイのレプリカ数を動的に調整します。この機能はCoreDNS v1.9
および EKS リリースバージョン 1.25
以降で機能します。CoreDNS 自動スケーリングと互換性のあるバージョンの詳細については次のセクションを参照してください。
この機能はアプリケーションの全体的な可用性とクラスターのスケーラビリティを向上させるために、他の EKS クラスターの自動スケーリングのベストプラクティス
前提条件
アマゾン EKS が CoreDNS デプロイをスケーリングするには次の 3 つの前提条件があります:
-
CoreDNS の EKS アドオンバージョンを使用する必要があります。
-
クラスターは少なくとも最小のクラスターバージョンとプラットフォームバージョンを実行している必要があります。
-
クラスターは少なくとも CoreDNS の EKS アドオンの最小バージョンを実行している必要があります。
最小クラスターバージョン
CoreDNS の自動スケーリングはアマゾン EKS によって管理されるクラスターコントロールプレーンの新しいコンポーネントによって行われます。このため、新しいコンポーネントを持つ最小プラットフォームバージョンをサポートする EKS リリースにクラスターをアップグレードする必要があります。
新しい アマゾン EKS クラスター。デプロイするには「Amazon EKS の使用を開始する」を参照してください。クラスターは Kubernetes バージョン 1.25
以降である必要があります。クラスターは次の表に示す Kubernetes バージョンとプラットフォームバージョン、またはそれ以降のいずれかを実行している必要があります。一覧にあるバージョンより後の Kubernetes とプラットフォームのバージョンもサポートされることにご注意ください。現在の Kubernetes バージョンを確認するには次のコマンドの マイクラスター
をクラスターの名前に置き換えて、変更したコマンドを実行してください:
aws eks describe-cluster --name my-cluster --query cluster.version --output text
Kubernetes バージョン | プラットフォームバージョン |
---|---|
|
|
|
|
|
|
|
|
|
|
注記
以降の Kubernetes バージョンのすべてのプラットフォームバージョンもサポートされています。例えば、Kubernetes バージョン 1.30
の eks.1
以降のバージョンなどです。
EKS アドオンの最小バージョン
Kubernetes バージョン | 1.29 | 1.28 | 1.27 | 1.26 | 1.25 |
---|---|---|---|---|---|
|
|
|
|
|
-
クラスターが最小クラスターバージョン以上であることを確認します。
アマゾン EKS は同じ Kubernetes バージョンのプラットフォームバージョン間でクラスターを自動的にアップグレードするため、このプロセスを自分で開始することはできません。代わりに、クラスターを次の Kubernetes バージョンにアップグレードすると、クラスターはその K8s バージョンと最新のプラットフォームバージョンにアップグレードされます。例えば、
1.25
から1.26
にアップグレードすると、クラスターは1.26.15 eks.18
にアップグレードされます。新しい Kubernetes バージョンでは大幅な変更が加えられている場合があります。このため、本稼働用クラスターで更新を行う前に、新しい Kubernetes バージョンのクラスターを別に用意し、アプリケーションの動作をテストしておくことをお勧めします。
クラスターを新しい Kubernetes バージョンにアップグレードするには「既存のクラスターを新しい Kubernetes バージョンに更新する」の手順に従います。
-
セルフマネージド型の CoreDNS デプロイではなく、CoreDNS 用の EKS アドオンがあることを確認します。
クラスターを作成するために使用したツールによっては現在クラスターに アマゾン EKS アドオンタイプがインストールされていない場合があります。クラスターにインストールされているアドオンのタイプを確認するには次のコマンドを実行してください。
my-cluster
を自分のクラスター名に置き換えます。aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
バージョン番号が返された場合、クラスターに アマゾン EKS タイプのアドオンがインストールされ、次のステップに進むことができます。エラーが返された場合、クラスターに アマゾン EKS タイプのアドオンがインストールされていません。ステップ「CoreDNS アマゾン EKS を作成する」の残りのステップを完了して、セルフマネージドバージョンを アマゾン EKS アドオンに置き換えます。
-
CoreDNS の EKS アドオンが、最小 EKS アドオンバージョンと同じかそれ以上のバージョンであることを確認します。
クラスターにインストールされているアドオンのバージョンを確認します。AWS Management Consoleで確認するか、以下のコマンドを実行できます:
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
出力例は次のとおりです。
v1.10.1-eksbuild.13
このバージョンを前のセクションの最小 EKS アドオンバージョンと比較します。必要に応じて、「CoreDNS アマゾン EKS アドオンを更新する」の手順に従って EKS アドオンを上位のバージョンにアップグレードします。
-
自動スケーリング設定を EKS アドオンの [オプションの設定] に追加します。
-
アマゾン EKS コンソール
を開きます。 -
左のナビゲーションペインで、[クラスター] を選択し、次にアドオンを設定するクラスター名を選択してください。
-
[アドオン] タブを選択してください。
-
CoreDNS アドオンボックスの右上にあるボックスを選択し、次に [編集] を選択してください。
-
[CoreDNS を設定] ページで、次の操作を行います:
-
使用する [バージョン] を選択してください。前のステップと同じバージョンを保持し、別のアクションでバージョンと設定を更新することをお勧めします。
-
[オプションの構成設定] を展開します。
-
[設定値] で JSON キー
"autoscaling":
とネストした JSON オブジェクトの値に、キー"enabled":
と値true
を指定します。結果のテキストは有効な JSON オブジェクトでなければなりません。このキーと値だけがテキストボックス内のデータである場合はキーと値を中括弧{ }
で囲みます。次の例は自動スケーリングが有効になっていることを示しています:{ "autoScaling": { "enabled": true } }
-
(オプション) 自動スケーリングが CoreDNS ポッド数をスケールできる最小値と最大値を指定できます。
次の例は自動スケーリングが有効で、すべてのオプションキーに値があることを示しています。クラスター内の DNS サービスに回復力を提供できるように、CoreDNS ポッドの最小数は常に 2 より大きくすることをお勧めします。
{ "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10 } }
-
-
CoreDNS ポッドを置き換えて新しい設定を適用するには[変更を保存] を選択してください。
アマゾン EKS はKubernetes Deployment for CoreDNS のロールアウトを使用して EKS アドオンに変更を適用します。ロールアウトのステータスはAWS Management Console のアドオン [更新履歴] と
kubectl rollout status deployment/coredns --namespace kube-system
で追跡できます。kubectl rollout
は以下のコマンドを実行してください:kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout
ロールアウトに時間がかかりすぎる場合、アマゾン EKS はロールアウトを取り消し、[アドオン更新] のタイプと [失敗] のステータスのメッセージがアドオンの [更新履歴] に追加されます。問題を調査するにはロールアウトの履歴から開始し、CoreDNS のポッドで
kubectl logs
を実行して CoreDNS のログを確認します。
-
-
[更新履歴] の新しいエントリのステータスが [成功] の場合、ロールアウトが完了し、アドオンはすべての CoreDNS のポッドで新しい設定を使用していることを意味します。クラスター内のノード数とノードの CPU コア数を変更すると、アマゾン EKS は CoreDNS デプロイのレプリカ数をスケールします。
-
クラスターが最小クラスターバージョン以上であることを確認します。
アマゾン EKS は同じ Kubernetes バージョンのプラットフォームバージョン間でクラスターを自動的にアップグレードするため、このプロセスを自分で開始することはできません。代わりに、クラスターを次の Kubernetes バージョンにアップグレードすると、クラスターはその K8s バージョンと最新のプラットフォームバージョンにアップグレードされます。例えば、
1.25
から1.26
にアップグレードすると、クラスターは1.26.15 eks.18
にアップグレードされます。新しい Kubernetes バージョンでは大幅な変更が加えられている場合があります。このため、本稼働用クラスターで更新を行う前に、新しい Kubernetes バージョンのクラスターを別に用意し、アプリケーションの動作をテストしておくことをお勧めします。
クラスターを新しい Kubernetes バージョンにアップグレードするには「既存のクラスターを新しい Kubernetes バージョンに更新する」の手順に従います。
-
セルフマネージド型の CoreDNS デプロイではなく、CoreDNS 用の EKS アドオンがあることを確認します。
クラスターを作成するために使用したツールによっては現在クラスターに アマゾン EKS アドオンタイプがインストールされていない場合があります。クラスターにインストールされているアドオンのタイプを確認するには次のコマンドを実行してください。
my-cluster
を自分のクラスター名に置き換えます。aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
バージョン番号が返された場合、クラスターに アマゾン EKS タイプのアドオンがインストールされています。エラーが返された場合、クラスターに アマゾン EKS タイプのアドオンがインストールされていません。ステップ「CoreDNS アマゾン EKS を作成する」の残りのステップを完了して、セルフマネージドバージョンを アマゾン EKS アドオンに置き換えます。
-
CoreDNS の EKS アドオンが、最小 EKS アドオンバージョンと同じかそれ以上のバージョンであることを確認します。
クラスターにインストールされているアドオンのバージョンを確認します。AWS Management Consoleで確認するか、以下のコマンドを実行できます:
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
出力例は次のとおりです。
v1.10.1-eksbuild.13
このバージョンを前のセクションの最小 EKS アドオンバージョンと比較します。必要に応じて、「CoreDNS アマゾン EKS アドオンを更新する」の手順に従って EKS アドオンを上位のバージョンにアップグレードします。
-
自動スケーリング設定を EKS アドオンの [オプションの設定] に追加します。
次の AWS CLI コマンドを実行してください。
my-cluster
をクラスターの名前に置き換え、IAM ロール ARN を使用するロールに置き換えます。aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'
アマゾン EKS はKubernetes CoreDNSの展開 のロールアウトを使用して EKS アドオンに変更を適用します。ロールアウトのステータスはAWS Management Console のアドオン [更新履歴] と
kubectl rollout status deployment/coredns --namespace kube-system
で追跡できます。kubectl rollout
は以下のコマンドを実行してください:kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout
ロールアウトに時間がかかりすぎる場合、アマゾン EKS はロールアウトを取り消し、[アドオン更新] のタイプと [失敗] のステータスのメッセージがアドオンの [更新履歴] に追加されます。問題を調査するにはロールアウトの履歴から開始し、CoreDNS のポッドで
kubectl logs
を実行して CoreDNS のログを確認します。 -
(オプション) 自動スケーリングが CoreDNS ポッド数をスケールできる最小値と最大値を指定できます。
次の例は自動スケーリングが有効で、すべてのオプションキーに値があることを示しています。クラスター内の DNS サービスに回復力を提供できるように、CoreDNS ポッドの最小数は常に 2 より大きくすることをお勧めします。
aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}'
-
次のコマンドを実行して、アドオンの更新のステータスを確認します:
aws eks describe-addon --cluster-name my-cluster --addon-name coredns \
"status": "ACTIVE"
という行が表示された場合、ロールアウトが完了し、アドオンはすべての CoreDNS ポッドで新しい設定を使用していることを意味します。クラスター内のノード数とノードの CPU コア数を変更すると、アマゾン EKS は CoreDNS デプロイのレプリカ数をスケールします。