Tilt ( https://tilt.dev/ )と呼ばれる K8s 開発ツールを使用しています。これは、多数のマイクロサービスを含むスタックの開発イメージを構築し、ライブ リロードなどを可能にします。
buildx create
10 個のレプリカを使用して、リモート ビルダー ポッドを AWS K8s クラスターにデプロイしました。ただし、ビルドをスピンオフすると、実際のビルドにはこれらのポッドのうち 2 つしか使用されないように見え (クラスターで見られる CPU とメモリのメトリックに基づく)、残りの 8 つはアイドル状態になります。チルトアップを実行すると、すべてのマイクロサービスの同時イメージ ビルドが開始されるため、実行中の 10 個のビルダー ポッドすべてにビルド ステップを分散することが理想的です。
これは、私たちのプロジェクトが現在 monorepo に存在し、プロジェクトのルート レベルで同じ Dockerfile.dev を使用してすべてのイメージをビルドしているためだと思われます(ビルド時に を使用してマイナー構成が渡されます--build-arg
) 。
これを疑うのは正しいですか?わかりにくいですが、Dockerfile コンテキストに基づいて buildx の負荷分散を行っているようです。もしそうなら、この動作をオーバーライドできますか?
あるいは、buildx ノードを手動で選択する方法はありますか? 既存のリモート ノード間でループして構築負荷を分散するセレクターのスクリプトを作成するのは簡単です