ECI インスタンスを作成する際、指定した vCPU とメモリが ECI の仕様の制約を満たしていない場合、システムは最も近いサポートされている仕様に合致するようにインスタンスを自動的に調整します。この調整により、インスタンスが過大になり、リソースの無駄が発生する可能性があります。サイドカーコンテナなど、主要なビジネスロジックに影響を与えないコンテナについては、環境変数を設定できます。これにより、仕様調整時にそのコンテナを無視するようシステムに指示し、リソースの無駄をなくし、ECI のコストを削減できます。
仕組み
ECI インスタンスを作成する際、各コンテナの vCPU とメモリを指定できます。リソースの合計は、ECI インスタンス全体の vCPU とメモリの制約を満たす必要があります。インスタンスレベルで vCPU とメモリを設定しない場合、システムはすべてのコンテナに必要な vCPU とメモリの合計を計算します。この合計がサポートされている ECI の仕様と一致しない場合、システムは自動的に仕様調整を実行します。
コンテナに指定された vCPU とメモリは、そのリソース制限を定義します。システムはランタイム中にリソースを動的に割り当てます。そのため、インスタンス内の重要でない特定のコンテナに対して、環境変数 __ECI_RESOURCE_IGNORE__:TRUE を設定できます。これにより、仕様調整時にこれらのコンテナを無視するようシステムに指示し、過大なインスタンスの作成を防ぎ、リソースの無駄を回避できます。
例えば、次のようになります。

上図のように、中国 (杭州) リージョンで ECI インスタンスを作成するとします。このインスタンスには 3 つのコンテナが含まれています。コンテナ 1 とコンテナ 2 (ビジネスコンテナ) はそれぞれ 2 vCPU と 4 GiB のメモリで設定され、コンテナ 3 (サイドカーコンテナ) は 0.25 vCPU と 0.5 GiB のメモリで設定されています。デフォルトでは、システムはインスタンスの仕様を 6 vCPU と 10 GiB のメモリに調整します。しかし、この仕様はワークロードの実際のニーズを超える可能性があります。最適化のために、サイドカーコンテナに環境変数 __ECI_RESOURCE_IGNORE__:TRUE を設定できます。この設定を適用すると、システムはサイドカーコンテナを無視し、インスタンスの仕様を 4 vCPU と 8 GiB のメモリに調整します。
設定
CreateContainerGroup API を呼び出して ECI インスタンスを作成する際、インスタンスレベルの Cpu および Memory パラメーターが設定されていない場合に限り、Container.N.Cpu および Container.N.Memory パラメーターを使用して各コンテナの vCPU とメモリを指定できます。仕様調整時にコンテナを無視するには、Container.N.EnvironmentVar.N.Key および Container.N.EnvironmentVar.N.Value パラメーターを使用して、そのコンテナに環境変数 __ECI_RESOURCE_IGNORE__:TRUE を設定します。次の表に、関連するパラメーターを示します。詳細については、「CreateContainerGroup」をご参照ください。
|
パラメーター |
型 |
例 |
説明 |
|
Cpu |
Float |
指定なし |
インスタンスの vCPU サイズ。単位:コア。 |
|
Memory |
Float |
指定なし |
インスタンスのメモリサイズ。単位:GiB。 |
|
Container.N.Cpu |
Float |
2 |
コンテナの vCPU サイズ。単位:コア。N はコンテナのインデックスを表します。最大 20 個のコンテナがサポートされます。 |
|
Container.N.Memory |
Float |
4 |
コンテナのメモリサイズ。単位:GiB。N はコンテナのインデックスを表します。最大 20 個のコンテナがサポートされます。 |
|
Container.N.EnvironmentVar.N.Key |
String |
__ECI_RESOURCE_IGNORE__ |
環境変数の名前。最初の N はコンテナのインデックス、2 番目の N は環境変数のインデックスです。 |
|
Container.N.EnvironmentVar.N.Value |
String |
TRUE |
環境変数の値。最初の N はコンテナのインデックス、2 番目の N は環境変数のインデックスです。 |
コンソールを使用して ECI インスタンスを作成する場合、インスタンスレベルで vCPU とメモリを設定する必要があります。そのため、仕様調整は適用されません。