このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
最適な Amazon EC2 ノードインスタンスタイプを選択する
Amazon EC2 では、ワーカーノード用のインスタンスタイプが幅広く用意されています。インスタンスタイプごとに、コンピューティング、メモリ、ストレージの異なる機能が提供されます。また、各インスタンスファミリーは、これらの機能に基づきグループ化されています。リストについては、「Amazon EC2 ユーザーガイド」の「使用可能なインスタンスタイプ」および「Amazon EC2 ユーザーガイド」の「使用可能なインスタンスタイプ」を参照してください。Amazon EKS は、(特定の) サポートを有効にするために、Amazon EC2 AMI のいくつかのバリエーションをリリースしています。選択したインスタンスタイプに Amazon EKS との互換性があることを確認する際は、次の基準を考慮してください。
-
すべての Amazon EKS AMI は、現在、
g5g
およびmac
ファミリをサポートしていません。 -
Arm およびアクセラレータ付きではない Amazon EKS AMI では、
g3
、g4
、inf
、およびp
ファミリはサポートされません。 -
アクセラレータ付き Amazon EKS AMI は、
a
、c
、hpc
、m
、およびt
ファミリをサポートしていません。 -
ARM ベースのインスタンスの場合、Amazon Linux 2023 (AL2023) は Graviton2 以降のプロセッサを使用するインスタンスタイプのみをサポートします。AL2023 は
A1
インスタンスをサポートしていません。
Amazon EKS でサポートされているインスタンスタイプを選択する場合は、各タイプで次の機能を考慮してください。
- ノードグループ内のインスタンス数。
-
特に多くの Daemonsets が存在する場合などは、一般的に、数少ない大型のインスタンスの使用が適しています。各インスタンスには API サーバーへの API コールが必要です。したがって、インスタンス数が多いほど、API サーバーのロードが高くなります。
- オペレーティングシステム
-
Linux、Windows、および Bottlerocket
に対応しているインスタンスタイプを確認します。Windows インスタンスを作成する前に、EKS クラスターに Windows ノードをデプロイする を確認してください。 - ハードウェアアーキテクチャ
-
x86 または Arm のどちらが必要か検討します。Arm インスタンスをデプロイする前に、Amazon EKS 最適化 Arm Amazon Linux AMI を確認します。Nitro System (Linux または Windows) 上に構築されたインスタンス、またはアクセラレータ付き機能インスタンが必要かを検討します。高速化された機能が必要な場合は、Amazon EKS でのみ Linux を使用できます。
- Pods の最大数
-
各 Pod には独自の IP アドレスが割り当てられているため、インスタンスタイプでサポートされている IP アドレスの数が、インスタンスで実行できる Pods の数を決定するための要因になります。インスタンスタイプがサポートする Pods の数を手動で確認するには、「各 Amazon EC2 インスタンスタイプの Amazon EKS 推奨最大 Pods 数」を参照してください。
注記
Amazon EKS に最適化された Amazon Linux 2 AMI の
v20220406
以降を使用している場合、AMI を最新版にアップグレードしなくても、新しいインスタンスタイプを使用できます。これらの AMI は、max-pods
の値がeni-max-pods.txt
ファイルにリストされていな場合、必要な値を自動計算します。現在プレビュー中のインスタンスタイプは、Amazon EKS のデフォルトではサポートされていない場合があります。これらのタイプでのmax-pods
値は、依然として AMI 内のeni-max-pods.txt
に追加する必要がありますAWS Nitro システム
のインスタンスタイプには、サポートできる IP アドレスの数を、非 Nitro のシステムのインスタンスタイプよりも大幅に多くできるオプションがあります。ただし、インスタンスに割り当てられたすべての IP アドレスが Pods で使用できるわけではありません。インスタンスに割り当てる IP アドレスの数を大幅に増やすには、クラスターにバージョン 1.9.0
以降の Amazon VPC CNI アドオンをインストールし、適切に設定する必要があります。詳細については、「プレフィックスを使用して Amazon EKS ノードに割り当てる IP アドレスを増やす」を参照してください。インスタンスに最大数の IP アドレスを割り当てるには、バージョン1.10.1
以降の Amazon VPC CNI アドオンをクラスターにインストールし、IPv6
ファミリーを使用してそのクラスターをデプロイする必要があります。 - IP ファミリー
-
クラスターで
IPv4
ファミリーを使用している場合、サポートされているすべてのインスタンスタイプが使用可能になります。これによりクラスターは、プライベートIPv4
アドレスを Pods とサービスに割り当てることができます。ただし、クラスターにIPv6
ファミリを使用する場合は、AWS Nitro システムインスタンスタイプ、またはベアメタルインスタンスタイプを使用する必要があります。 IPv4
のみが Windows インスタンスでサポートされています。クラスターでは、バージョン1.10.1
以降の Amazon VPC CNI アドオンを実行している必要があります。IPv6
の使用の詳細については、「クラスター、pods、サービスに IPv6 アドレスを割り当てる」を参照してください。 - 実行している Amazon VPC CNI アドオンのバージョン
-
最新バージョンの Amazon VPC CNI Plugin for Kubernetes
は、こちらのインスタンスタイプ をサポートしています。サポートされている最新のインスタンスタイプを利用するには、Amazon VPC CNI アドオンのバージョンを更新する必要があります。詳細については、「Amazon VPC CNI を使用してPodsに IP を割り当てる」を参照してください。最新バージョンでは、Amazon EKS で使用できる最新の機能をサポートしています。以前のバージョンでは、すべての機能がサポートされているわけではありません。さまざまなバージョンでサポートされている機能は、GitHub の [Changelog] (変更履歴) で確認できます。 - ノードを作成している AWS リージョン
-
AWS リージョンによっては使用できないインスタンスタイプがあります。
- Pods にセキュリティグループを使用しているかどうか
-
Pods にセキュリティグループを使用している場合は、特定のインスタンスタイプのみがサポートされます。詳細については、「個々の pods にセキュリティグループを割り当てる」を参照してください。
各 Amazon EC2 インスタンスタイプの Amazon EKS 推奨最大 Pods 数
各 Pod には独自の IP アドレスが割り当てられているため、インスタンスタイプでサポートされている IP アドレスの数が、インスタンスで実行できる Pods の数を決定するための要因になります。Amazon EKS には、ダウンロードして実行できるスクリプトが用意されており、各インスタンスタイプで実行する Amazon EKS で推奨される最大の Pods 数を決定できます。このスクリプトでは、各インスタンスのハードウェア属性と設定オプションを使用して、Pods の最大数を決定します。これらの手順で返された番号を使用して、インスタンスのとは異なるサブネットから IP アドレスを Pods に割り当てたり、インスタンスの IP アドレスの数を大幅に増やす などの機能を有効にできます。複数のインスタンスタイプを持つマネージド型ノードグループを使用している場合は、それらすべてのインスタンスタイプで機能する値を使用します。
-
各インスタンスタイプにおける Pods の最大数を計算するために使用できるスクリプトをダウンロードします。
curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/templates/al2/runtime/max-pods-calculator.sh
-
コンピュータ上で、そのスクリプトを実行可能としてマークします。
chmod +x max-pods-calculator.sh
-
をデプロイ予定のインスタンスタイプに置き換え、m5.large
を Amazon VPC CNI アドオンバージョンに置き換えて、そのスクリプトを実行します。アドオンのバージョンを確認するには、Amazon VPC CNI を使用してPodsに IP を割り当てるの更新手順を参照してください。1.9.0-eksbuild.1
./max-pods-calculator.sh --instance-type
m5.large
--cni-version1.9.0-eksbuild.1
出力例は次のとおりです。
29
次のオプションをスクリプトに追加して、オプション機能を使用する際にサポートされる最大の Pods 数を確認できます。
-
--cni-custom-networking-enabled
— インスタンスとは異なるサブネットから IP アドレスを割り当てる場合は、このオプションを使用します。詳細については、「カスタムネットワーキングを使用して代替サブネットにpodsをデプロイする」を参照してください。同じサンプル値を使用して前のスクリプトにこのオプションを追加すると、20
が得られます。 -
--cni-prefix-delegation-enabled
— 各 elastic network interface にかなり多くの IP アドレスを割り当てる場合は、このオプションを使用します。この機能を使用するには、Nitro System で実行する Amazon Linux インスタンスと、Amazon VPC CNI アドオンのバージョン1.9.0
以降が必要です。詳細については、「プレフィックスを使用して Amazon EKS ノードに割り当てる IP アドレスを増やす」を参照してください。同じサンプル値を使用して前のスクリプトにこのオプションを追加すると、110
が得られます。
-
--help
オプションを指定してスクリプトを実行し、使用可能なすべてのオプションを表示することもできます。
注記
最大 Pods 計算スクリプトは、Kubernetes スケーラビリティのしきい値110
に制限します。インスタンスタイプに 30 を超える vCPU がある場合、この制限は、内部の Amazon EKS スケーラビリティチームのテストに基づく数値である 250
に跳ね上がります。詳細については、「Amazon VPC CNI プラグインがノードあたりのポッド数の制限を引き上げ