メインコンテンツまでスキップ

Karpenter

始める前に

このセクションのために環境を準備してください:

~$prepare-environment autoscaling/compute/karpenter

これにより、ラボ環境に以下の変更が適用されます:

  • Karpenterが必要とするさまざまなIAMロールやその他のAWSリソースをインストールします

これらの変更を適用するTerraformはこちらで確認できます。

このラボでは、Kubernetesのためのオープンソースの自動スケーリングプロジェクトであるKarpenterについて見ていきます。Karpenterは、スケジュールできないポッドの集約リソースリクエストを監視し、スケジューリングの遅延を最小限に抑えるためにノードの起動と終了を決定することで、アプリケーションのニーズに合った適切なコンピュートリソースを数分ではなく数秒で提供するように設計されています。

Karpenterの目標は、Kubernetesクラスター上で実行されるワークロードの効率性とコストを改善することです。Karpenterは以下のように動作します:

  • Kubernetesスケジューラによってスケジュール不可能とマークされたポッドを監視します
  • ポッドによって要求されるスケジューリング制約(リソースリクエスト、ノードセレクタ、アフィニティ、トレレーション、トポロジースプレッド制約)を評価します
  • ポッドの要件を満たすノードをプロビジョニングします
  • 新しいノードにポッドをスケジュールします
  • ノードが不要になった場合は削除します