自分のKubernetesクラスタでMPIジョブを実行したい。コンテキストは、私が実際には近代的な、きれいにコンテナ化されたアプリを実行しているということですが、ワークロードの一部はいつでもすぐに書き直されることのない伝統的なMPIの仕事です。そして、私はそれをkubernetes "世界観 "を可能な限り大きくしています。KubernetesとMPI
最初の質問:kubeクラスタでMPIジョブを実行するのに成功した人はいますか?私はChristian Kniep'sがdockerコンテナで動作するようにMPIジョブを取得するのを見てきましたが、彼はドッカーのスウォームパス(各コンテナで実行されているconsulを使ったピア発見)を行っています。この情報を外部から容器に注入する。アプリケーションのすべての部分を完全に制御できます。使用するMPI実装を選択できます。
私は続行する方法についてのアイデアをいくつ持っている:SLURMおよびアプリケーション・コードを含む
脂肪コンテナ - >コンテナ 起動時にピアに関する適切な情報を slurm.confを移入します - >ジョブにのみOpenMPIの(無SLURM)と
スリムコンテナを開始するコンテナのエントリポイントとして使用SRUN - >( kubernetesによって提供された)外部からの情報と、容器内の rankfile移入 - >使用のmpirunをコンテナエントリポイントとして
私は基本的にMPIランタイムを で "偽装"しています。 OpenMPIのオルテのもの) - > が直接mpicc'dバイナリを実行します(それはenvを通じた仲間 を知るだろう場所は
)
は絶望
にあきらめて他のいくつかのオプションをvarsの
MPIのような "確立された"ワークフローと、kubernetesとコンテナの "新しい魅力"を混在させようとしているのは、インピーダンスのミスマッチです。しかし、ポインタを探しています。間違った経路。何も存在しなければ、私はいくつかのものをハックして上流に押し戻すことができてうれしいです。
私はオプション3がうまくいくとは思っていません。 Open MPIの「orterun」(mpirunとmpiexec)は、実行可能ファイルを複数回起動するだけではありません。これは、ランク間の中央情報ブローカーとして機能します。オプション2は最も合理的です。 –