Amazon EKS コンピュート環境 - AWS Batch

Amazon EKS コンピュート環境

Amazon EKS で AWS Batch のご利用開始にあたって EKS コンピュート環境を作成するための簡単なガイドを提供します。このセクションでは、Amazon EKS のコンピューティング環境についてより詳しく説明します。

AWS Batch workflow diagram showing integration with Amazon EKS, ECS, Fargate, and EC2.

AWS Batch マネージドバッチ機能を提供することで、Amazon EKS クラスターのバッチワークロードを簡素化します。これには、キューイング、依存関係の追跡、ジョブの再試行と優先順位の管理、ポッド管理、ノードスケーリングが含まれます。 AWS Batch 複数のアベイラビリティーゾーンと複数の Amazon EC2 インスタンスタイプとサイズを処理できます。 AWS Batch Amazon EC2 スポットベストプラクティスのいくつかを統合して、ワークロードを耐障害性のある方法で実行するため、中断が少なくなります。AWS Batch を使用すると、わずかな夜間ジョブや数百万のミッションクリティカルなジョブを自信を持って実行できます。

AWS Batch workflow on Amazon EKS, showing job queue, compute environment, and EC2 instances.

AWS Batch は、Amazon Elastic Kubernetes Service (Amazon EKS) によって管理される、Kubernetes クラスターのバッチワークロードをオーケストレーションするマネージドサービスです。AWS Batch は「オーバーレイ」モデルを使用して、このオーケストレーションをクラスターの外部で実施します。AWS Batch は、マネージド型サービスなので、クラスター内にインストールしたり管理したりする Kubernetes コンポーネント (オペレーターやカスタムリソースなど) はありません。AWS Batch は、クラスターに Kubernetes API サーバーとの通信を AWS Batch に許可するロールベースアクセス制御 (RBAC) を設定するだけで済みます。AWS Batch は Kubernetes API を呼び出して、Kubernetes のポッドとノードを作成、監視、削除します。

AWS Batch には、ジョブキャパシティ割り当ての観点から最適化を行い、ジョブキューの負荷に基づいて Kubernetes ノードをスケールするスケーリングロジックが組み込まれています。ジョブキューが空の場合、AWS Batch は設定した最小容量 (デフォルトではゼロ) までノードをスケールダウンします。AWS Batch はこれらのノードのライフサイクル全体を管理し、ノードをラベルやテイントで装飾します。こうすることで、AWS Batch が管理するノードに他の Kubernetes ワークロードが配置されることはありません。DaemonSets は例外で、ジョブの適切な実行に必要な監視やその他の機能を提供するために、AWS Batch ノードをターゲットにすることができます。さらに、AWS Batch は、管理していないクラスター内のノード上ではジョブ、特にポッドを実行しません。こうすることで、クラスター上の他のアプリケーションに個別のスケーリングロジックとサービスを使用できます。

AWS Batch にジョブを送信するには、AWS Batch API を直接操作します。AWS Batch はジョブを podspecs に変換し、Amazon EKS クラスターで AWS Batch が管理するノードにポッドを配置するリクエストを作成します。kubectl などのツールを使用して、実行中のポッドやノードを表示できます。ポッドの実行が完了すると、AWS Batchは、システムの低負荷を維持するために作成したポッドを削除する。

有効な Amazon EKS クラスターを AWS Batch に接続すると開始できます。次に、AWS Batch ジョブキューをそれにアタッチし、podspec と同等の属性を使用して Amazon EKS ジョブ定義を登録します。最後に、ジョブ定義を参照する SubmitJob API オペレーションを使用してジョブを送信します。詳細については、Amazon EKS で AWS Batch のご利用開始にあたって を参照してください。

Amazon EKS