Amazon Elastic Kubernetes Service (Amazon EKS) で VPC サブネットの IP アドレスコントロール番号を使用するように、Amazon 仮想プライベートクラウド (VPC) コンテナネットワークインターフェイス (CNI) プラグインを設定したいと考えています。
簡単な説明
Amazon VPC CNI の主要なコンポーネントの 1 つは、ノードに IP アドレスを割り当てる L-IPAM デーモンです。
ノード上で新しいポッドがスケジュールされている場合、コンテナランタイムは CNI バイナリを呼び出します。CNI バイナリは L-IPAMD を呼び出して、新しいポッドの IP アドレスを取得します。次に、ポッドはインスタンスにアタッチされているエラスティックネットワークインターフェイスと IP アドレスを追跡します。
特定の設定変数を使用して、維持するネットワークインターフェイスと IP アドレスの数を制御できます。詳細については、GitHub ウェブサイトの「WARM_ENI_TARGET, WARM_IP_TARGET and MINIMUM_IP_TARGET と WARM_PREFIX_TARGET, WARM_IP_TARGET and MINIMUM_IP_TARGET」を参照してください。
解決策
ネットワークインターフェイスと IP アドレスのメンテナンスを制御する各設定変数のベストプラクティスは次のとおりです。
WARM_ENI_TARGET
WARM_ENI_TARGET 変数を使用すると、L-IPAMD で利用可能なエラスティックネットワークインターフェイスの数を判断できます。これにより、ノードでスケジュールされたポッドにすぐに IP アドレスが割り当てられます。
WARM_ENI_TARGET のベストプラクティスは次のとおりです。
- ワーカーノードのインスタンスタイプと、インターフェイスごとのネットワークインターフェイスおよびプライベート IPv4 アドレスの最大数を確認します。これにより、使用可能なサブネット IP アドレスが枯渇するのを防止できます。
- アプリケーションの大幅なスケーリングが予想される場合は、新しくスケジュールされたポッドにすばやく対応できるように WARM_ENI_TARGET を使用します。
WARM_IP_TARGET
WARM_IP_TARGET 変数を使用すると、L-IPAMD のウォームプールに定義された数の使用可能なIPアドレスを常に確保できます。
WARM_IP_TARGET のベストプラクティスは次のとおりです。
- WARM_IP_TARGET は、生産性の低いクラスターに使用します。そうすることで、必要な数の IP アドレスのみがネットワークインターフェイスに割り当てられます。
- この設定は、クラスターのポッドチャーンが高い場合や大規模なクラスターには使用しないでください。Amazon Elastic Compute Cloud (Amazon EC2) API への呼び出しが増え、リクエストがスロットリングされる場合があります。WARM_IP_TARGET を使用する場合は、MINIMUM_IP_TARGET を設定するのがベストプラクティスです。
- MINIMUM_IP_TARGET が設定されている場合は、WARM_IP_TARGET を 0 より大きくするのがベストプラクティスです。
MINIMUM_IP_TARGET
MINIMUM_IP_TARGET を使用すると、ノードの作成時に最小数の IP アドレスを割り当てることができます。この変数は通常、WARM_IP_TARGET 変数とともに使用されます。
MINIMUM_IP_TARGET のベストプラクティスは次のとおりです。
- ノードごとに実行するポッドの最小数がわかっている場合は、MINIMUM_IP_TARGET を使用します。そうすることで、必要な数の IP アドレスが割り当てられます。
- この変数を WARM_IP_TARGET で設定して、将来のポッドで使用できるようにノードに利用可能な IP アドレスを確保します。
WARM_PREFIX_TARGET
WARM_PREFIX_TARGET 変数を使用すると、インスタンスのネットワークインターフェースに定義された数のプレフィックス (/28 CIDR ブロック) を常に追加できます。WARM_PREFIX_TARGET を使用できるのは CNI バージョン 1.9.0 以降のみで、Amazon VPC CNI IP アドレスのプレフィックス割り当て機能を有効にする必要があります。
WARM_PREFIX_TARGET のベストプラクティスは次のとおりです。
-
IP アドレスのプレフィックス割り当て機能を使用する場合は、必ず WARM_PREFIX_TARGET 変数を 1 以上の値に設定してください。0 に設定すると、次のエラーが表示されます。
「Error: Setting WARM_PREFIX_TARGET = 0 is not supported while WARM_IP_TARGET/MINIMUM_IP_TARGET is not set.Please configure either one of the WARM_{PREFIX/IP}_TARGET or MINIMUM_IP_TARGET env variables.」
-
サブネットが小さい場合は、WARM_IP_TARGET を WARM_PREFIX_TARGET と一緒に使用します。そうすることで、割り当てられるプレフィックスの数が多すぎて、使用可能な IP アドレスが枯渇することを回避できます。
これらの設定変数がIPアドレスの使用にどう影響するかについて詳しくは、GitHub ウェブサイトの「CNI configuration variables」を参照してください。