エラスティックコンテナインスタンスは数秒で起動し、必要に応じてスケールアウトします。短時間実行される Job の場合、エラスティックコンテナインスタンスを使用すると、リソースの無駄を防ぎ、ビジネス要件を満たしながらコストを削減し、クラスターの弾力性とリソース使用率を向上させることができます。
シナリオ
クラスターノードの計算リソースが不足している場合、Pod は正常に実行できません。しかし、多くのノードを作成すると、リソースの無駄が生じる可能性があります。ワークロードに明確なピーク時とオフピーク時がある場合は、エラスティックコンテナインスタンスをエラスティックリソースプールとして使用することをお勧めします。これらのインスタンスは数秒で起動し、必要に応じてスケールアウトするため、クラスターの弾力性が大幅に向上します。エラスティックコンテナインスタンスを使用してトラフィックの急増を処理し、Job を実行する場合、事前にサービストラフィックを見積もったり、アイドルリソースを予約したりする必要はありません。これにより、ビジネス要件を満たしながら、使用コストとメンテナンスコストを効果的に削減できます。

前提条件
クラスターに ack-virtual-node コンポーネントがインストールされています。詳細については、「ack-virtual-node コンポーネントをデプロイする」をご参照ください。
例
テスト用の名前空間を作成し、その名前空間に
alibabacloud.com/eci=trueラベルを追加します。説明このラベルを名前空間に追加すると、その名前空間内のすべての Pod が仮想ノードにスケジュールされ、エラスティックコンテナインスタンスとして実行されます。この例では、このメソッドを使用します。Pod をエラスティックコンテナインスタンスにスケジュールする方法の詳細については、「Pod を仮想ノードにスケジュールする」をご参照ください。
kubectl create ns vk kubectl label namespace vk alibabacloud.com/eci=trueテスト用の名前空間に Job を作成します。
次の YAML ファイルを編集して、job.yaml として保存します。
apiVersion: batch/v1 kind: Job metadata: name: pi namespace: vk # Pod をエラスティックコンテナインスタンスにスケジュールするために、特定のラベルを持つ名前空間を指定します spec: template: spec: containers: - name: pi image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5.32 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] resources: requests: cpu: 16 memory: 32Gi restartPolicy: Never backoffLimit: 4ジョブを作成します。
kubectl -n vk apply -f job.yaml
Job に対応する Pod の実行ステータスを確認します。
kubectl -n vk get pod -o wide期待される出力: Job が完了し (ステータスは Completed)、仮想ノードで実行されています (ノード名には
virtual-kubeletプレフィックスが付いています)。NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pi-zw2lc 0/1 Completed 0 15m 192.168.XX.XX virtual-kubelet-cn-shanghai-b <none> <none>Job に対応する Pod の詳細を表示します。
kubectl -n vk describe pod <pod-name>返されたイベントでは、StopCharge イベントは、エラスティックコンテナインスタンス Pod の実行が完了し、課金が停止したことを示します。
説明エラスティックコンテナインスタンス Pod は、使用されたリソースの量に基づいて課金されます。Pod が完了すると、システムは課金を停止します。詳細については、「エラスティックコンテナインスタンスの課金」および「エラスティックコンテナインスタンス Pod のライフサイクル」をご参照ください。
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ImageCacheMissed 16m EciService [eci.imagecache]イメージキャッシュが見つかりませんでした。 Normal Pulling 16m kubelet イメージ "registry.cn--shanghai.aliyuncs.com/eci_open/perl:5.32" をプルしています Normal Pulled 15m kubelet 12.951s (待機時間を含む 12.951s) でイメージ "registry.cn-shanghai.aliyuncs.com/eci_open/perl:5.32" のプルに成功しました。イメージサイズ: 336066994 バイト。 Normal Created 15m kubelet コンテナーを作成しました: pi Normal Started 15m kubelet コンテナー pi を開始しました Normal StopCharge 15m EciService [eci.containergroup]現在の ECI インスタンスの課金は停止しましたが、関連リソースはまだクリーンアップ中です。したがって、エラスティックコンテナインスタンスで Job を実行すると、コンピューティングコストと運用ワークロードを削減できます。クラスターに十分な計算リソースがあるかどうか、またはノード数をスケールする必要があるかどうかを心配する必要はありません。
参考資料
プリエンプティブルエラスティックコンテナインスタンスを使用して、インスタンスのコストを削減することもできます。詳細については、「プリエンプティブルエラスティックコンテナインスタンスを使用して Job を実行する」をご参照ください。