Amazon EC2 インスタンスタイプを選択する
Amazon EC2 インスタンスタイプごとに、コンピューティング、メモリ、ストレージ、およびネットワークの機能が異なっており、これらの機能に基づいたインスタンスファミリーにグループ化されています。
ノードグループのインスタンスタイプを選択する前に、次の基準を考慮してください。
-
ノードグループ内のインスタンス数 – 一般的に、多くのデーモンセットがある場合は特に、より少ないサイズの大きなインスタンスが適しています。各インスタンスには API サーバーへの API コールが必要です。したがって、インスタンス数が多いほど、API サーバーのロードが高くなります。
-
オペレーティングシステム — Linux、WindowsBottlerocket
に対応しているインスタンスタイプを確認する。Windows インスタンスを作成する前に、Windows サポートを確認してください。 -
ハードウェアアーキテクチャ — x86 または Arm が必要ですか。Linux は Arm でのみデプロイできます。Arm インスタンスをデプロイする前に、Amazon EKS 最適化 Arm Amazon Linux AMIを確認してください。Nitro System ((LinuxまたはWindows)、または高速機能) 上に構築されたインスタンスが必要ですか。高速機能が必要な場合、Linux は Amazon EKS でのみ使用できます。
-
ポッドの最大数 — 各ポッドには独自の IP アドレスが割り当てられているため、インスタンスタイプでサポートされている IP アドレスの数は、インスタンスで実行できるポッドの数を決定する要因になります。AWSNitro システム
インスタンスタイプは、オプションで Nitro System 以外のインスタンスタイプよりも大幅に多くの IP アドレスをサポートします。ただし、インスタンスに割り当てられたすべての IP アドレスがポッドで使用できるわけではありません。インスタンスタイプがサポートするポッドの数を決定するには、「各 Amazon EC2 インスタンスタイプの Amazon EKS の推奨最大ポッド数」を参照してください。インスタンスにより多くの IP アドレスを割り当てるには、バージョン 1.9.0 以降の Amazon VPC CNI アドオンをクラスターにインストールし、適切に設定する必要があります。詳細については、「Amazon EC2 ノードで使用可能な IP アドレスの量を増やす」を参照してください。インスタンスに最大数の IP アドレスを割り当てるには、バージョン 1.10.1 以降の Amazon VPC CNI アドオンを 1.21 以降のクラスターにインストールし、IPv6 ファミリーでクラスターをデプロイする必要があります。 -
IPファミリー — クラスターに IPv4 ファミリーを使用する場合、サポートされているインスタンスタイプを使用できます。これにより、クラスターでポッドとサービスにプライベート IPv4 アドレスを割り当てることができます。ただし、クラスターに IPv6 ファミリーを使用する場合は、Linux を実行する AWS Nitro System
のインスタンスタイプを使用する必要があります。Windows インスタンスには、IPv4 のみがサポートされています。クラスターは、バージョン 1.10.1 以降の Amazon VPC CNI アドオンを実行する、1.21 以降の新しいクラスターである必要があります。IPv6 の使用についての詳細は、「ポッドとサービスへの IPv6 アドレスの割り当て」を参照してください。 -
実行している Amazon VPC CNI アドオンのバージョン — Kubernetes 用の Amazon VPC CNI
プラグインの最新バージョンは、これらのインスタンスタイプ をサポートしています。サポートされている最新のインスタンスタイプを利用するには、Amazon VPC CNI アドオンのバージョンを更新する必要があります。詳細については、「Amazon VPC CNI のセルフマネージド型アドオンを更新する」を参照してください。最新バージョンでは、Amazon EKS で使用できる最新の機能をサポートしています。以前のバージョンでは、すべての機能がサポートされているわけではありません。さまざまなバージョンでサポートされている機能は、GitHub の Changelog で確認できます。 -
ノードを作成している AWS リージョン - AWS リージョン によっては使用できないインスタンスタイプがあります。
-
ポッドにセキュリティグループを使用しているかどうか — 使用している場合は、特定のインスタンスタイプのみがサポートされます。詳細については、「Amazon EC2 がサポートするインスタンスとブランチネットワークインターフェイス」を参照してください。
各 Amazon EC2 インスタンスタイプの Amazon EKS の推奨最大ポッド数
Amazon EKS には、ダウンロードして実行できるスクリプトが用意されており、各インスタンスタイプで実行する Amazon EKS で推奨される最大のポッド数を決定できます。このスクリプトでは、各インスタンスのハードウェア属性と設定オプションを使用して、ポッドの最大数を決定します。これらの手順で返された番号を使用して、インスタンスのとは異なるサブネットから、IP アドレスをポッドに割り当てるおよびインスタンスの IP アドレスの数を大幅に増やす。
-
各インスタンスタイプにおけるポッドの最大数を計算するために使用できるスクリプトをダウンロードします。
curl -o max-pods-calculator.sh https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/files/max-pods-calculator.sh
-
コンピュータ上で、そのスクリプトを実行可能としてマークします。
chmod +x max-pods-calculator.sh
-
をデプロイ予定のインスタンスタイプに置き換え、m5.large
1.9.0-eksbuild.1
をAmazon VPC CNI アドオンバージョンに置き換えて、そのスクリプトを実行します。使用可能ないくつかのインスタンスタイプのリストについては、GitHub 上で eni-max-pods.txtを参照してください。アドオンのバージョンを確認するには、Amazon VPC CNI アドオンの管理の更新手順を参照してください。 ./max-pods-calculator.sh --instance-type
m5.large
--cni-version1.9.0-eksbuild.1
出力
29
次のオプションをスクリプトに追加して、オプションの機能を使用する際にサポートされる最大のポッド数を確認できます。
-
--cni-custom-networking-enabled
— インスタンスとは異なるサブネットから IP アドレスを割り当てる場合は、このオプションを使用します。詳細については、「CNI カスタムネットワーク」を参照してください。同じサンプル値を使用して前のスクリプトにこのオプションを追加すると、20
が得られます。 -
--cni-prefix-delegation-enabled
— 各 elastic network interface にかなり多くの IP アドレスを割り当てる場合は、このオプションを使用します。この機能を使用するには、Nitro System および Amazon VPC CNI アドオンのバージョン 1.9.0 以降で実行する Amazon Linux インスタンスが必要です。詳細については、「Amazon EC2 ノードで使用可能な IP アドレスの量を増やす」を参照してください。同じサンプル値を使用して前のスクリプトにこのオプションを追加すると、110
が得られます。
-
--help
オプションを指定してスクリプトを実行し、使用可能なすべてのオプションを表示することもできます。