このトピックでは、Elastic Container Instance でサポートされているコンピューティング仕様と、エラスティックコンテナインスタンスベースのポッドを作成する方法について説明します。ビジネス要件に基づいて、適切な方法を選択してエラスティックコンテナインスタンスベースのポッドを作成できます。これにより、ポッド作成の成功率を向上させ、リソースコストを削減しながら、エラスティックコンテナインスタンスベースのポッドのリソース供給を確保できます。
エラスティックコンテナインスタンスベースのポッドを作成する際のコンピューティング仕様の指定例
エラスティックコンテナインスタンスベースのポッドを作成するときに、コンピューティングカテゴリ、Elastic Compute Service (ECS) インスタンスファミリー、ECS インスタンスファミリーの世代、または ARM ベースの ECS インスタンスタイプを指定する必要がない場合は、k8s.aliyun.com/eci-use-specs アノテーションをポッドメタデータに追加できます。
アノテーションは、ポッド構成ファイルのメタデータに追加する必要があります。たとえば、Deployment を作成するときは、spec.template.metadata セクションにアノテーションを追加する必要があります。
複数の仕様を指定する場合、vCPU とメモリの仕様または ECS インスタンスタイプを指定できます。また、両方を指定することもできます。
重要ポッドが作成された後、ポッドの YAML ファイルの
k8s.aliyun.com/eci-instance-specフィールドで、ポッドによって実際に使用されている仕様を確認できます。ポッドが ECS インスタンスタイプを使用している場合、ECS インスタンスタイプに基づいて課金されます。ポッドが vCPU とメモリの仕様を使用している場合、vCPU の数とメモリサイズに基づいて課金されます。仕様は優先順位で指定する必要があります。最大 5 つの仕様を指定できます。
GPU 高速化エラスティックコンテナインスタンス、ローカルディスクを使用するエラスティックコンテナインスタンス、または Arm ベースのエラスティックコンテナインスタンスを作成する場合は、対応する仕様のみを指定できます。上記の機能をサポートしていない仕様は指定できません。
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: "ecs.gn6i-c4g1.xlarge,ecs.gn6i-c8g1.2xlarge" # 最大 5 つの GPU 高速化 ECS インスタンスタイプを一度に指定します。
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
resources:
limits:
nvidia.com/gpu: "1" # Nginx コンテナに必要な GPU の数。GPU は共有されます。
ports:
- containerPort: 80
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
nvidia.com/gpu: "1" # BusyBox コンテナに必要な GPU の数。GPU は共有されます。apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: 2-4Gi,ecs.c5.large,ecs.c6.large # ポッドの作成に使用する仕様を設定します。実際の仕様を使用して値を置き換えます。
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80Elastic Container Instance でサポートされているコンピューティング仕様
Elastic Container Instance でサポートされている vCPU とメモリ仕様
Elastic Container Instance でサポートされている ECS インスタンスファミリ
関連情報
作成方法の概要
ビジネスシナリオと使用シナリオに基づいて、さまざまな方法を使用してポッドを作成できます。これらの方法は、さまざまな課金モードに対応しています。詳細については、「エラスティックコンテナインスタンスの課金」をご参照ください。
作成方法 | 課金基準 | 説明 | 関連情報 |
vCPU の数とメモリサイズを指定する | vCPU とメモリの仕様に基づく | ポッドの作成時に指定した vCPU とメモリの仕様に基づいて、ポッドの料金が請求されます。コストとパフォーマンスの要件に基づいて、コンピューティングカテゴリを指定することもできます。サポートされていない vCPU とメモリの仕様については、システムがインスタンスの仕様を調整し、新しい仕様に基づいて課金されます。 | |
ECS インスタンスタイプを指定する | ECS インスタンスタイプに基づく | ポッドの作成時に指定した ECS インスタンスタイプに基づいて、ポッドの料金が請求されます。ビジネス要件に基づいて、Elastic Container Instance ポッドの基盤サポートとして ECS インスタンスタイプを指定できます。このようにして、ポッドは ECS インスタンスタイプの特定の機能を取得できます。たとえば、ecs.gn6i-c4g1.xlarge インスタンスタイプを指定すると、ポッドは GPU 高速化機能を取得できます。 | |
vCPU とメモリの仕様を指定しながら、フィルタリング用の ECS インスタンスファミリまたはインスタンスファミリの世代を設定する | ECS インスタンスタイプに基づく | システムは、vCPU とメモリの仕様、およびポッドの作成時に指定した ECS インスタンスファミリまたはインスタンスファミリの世代のフィルタ条件に基づいて、適切な ECS インスタンスタイプを自動的に選択します。実際に使用された ECS インスタンスタイプに基づいて課金されます。 |
ポッドは、x86 アーキテクチャ (デフォルト) と ARM アーキテクチャをサポートしています。ARM アーキテクチャのポッドの作成方法については、「ポッドを ARM ベースの仮想ノードにスケジュールする」をご参照ください。
ポッドの使用コストの最適化
従量課金制のエラスティックコンテナインスタンスを、プリエンプティブルエラスティックコンテナインスタンス、リザーブドインスタンス、および節約プランと組み合わせて使用することで、ビジネス要件に基づいてコストを削減できます。
プリエンプティブルエラスティックコンテナインスタンスは、ステートレスでフォールトトレラントなワークロードに使用できます。詳細については、「プリエンプティブルエラスティックコンテナインスタンスを作成する」をご参照ください。
長期的に安定したワークロードの場合、リザーブドインスタンスまたは節約プランを使用してポッドの請求を相殺することをお勧めします。ポッドの課金基準に基づいて、次の方法を使用して請求を相殺できます。
vCPU の数とメモリサイズに基づいて課金されるポッド:汎用節約プランを使用できます。
ECS インスタンスタイプに基づいて課金されるポッド:汎用節約プラン、ECS コンピューティング節約プラン、およびリザーブドインスタンスを使用できます。
エラスティックコンテナインスタンスに基づいて相殺方法を選択できます。詳細については、「リザーブドインスタンスを使用する」および「節約プランを使用する」をご参照ください。
リソース不足への対応
Elastic Container Instance は、コンテナ用のクラウド リソースを提供します。多数のポッドを作成すると、指定したリージョンとゾーンの一部のリソースが不足する可能性があります。ポッドを確実に作成できるように、複数のポッド仕様と、異なるゾーンにデプロイされた複数の vSwitch を指定することをお勧めします。詳細については、以下のトピックをご参照ください。