Volcano v1.2 以降のリソース予約の実装原則

 1. 背景の紹介       

 Volcano v1.2 より前は、リソース予約は予約アクションによって実装されていました。具体的な実装については、以下を参照してください。

火山のジョブリソース予約設計原則の解釈-クラウドコミュニティ-HUAWEI CLOUD

        予約アクションによりリソースの予約が完了します。選択したターゲット ジョブをノードにバインドします。予約アクション、選択アクション、および予約プラグインは、リソース予約メカニズムを構成します。予約アクションは、割り当てアクションの後に設定する必要があります。R予約アクションは v1.2 以降非推奨となり、SLA プラグインに置き換えられました。以下では、SLA の方法に焦点を当てます。

2. SLA の概要

        ユーザーが Volcano にジョブを適用する場合、ジョブに特定の制約を追加する必要がある場合があります。たとえば、最大保留時間はジョブが枯渇しないように設計されています。これらの制約は、Volcano とユーザー間のサービス レベル アグリーメント (SLA) として見ることができます。したがって、sla プラグインは、個々のジョブおよびクラスター全体の SLA 設定を受信して​​実装するために提供されています。

        SLA の正式名称はサービス レベル アグリーメントです。ユーザーが volcano にジョブを送信すると、最大待機時間 (JobWaitingTime) などの特別な制約がジョブに追加される場合があります。これらの制約は、ユーザーと火山の間のサービス契約とみなすことができます。SLA プラグインは、単一のジョブまたはクラスター全体のSLAパラメーターを受信または送信できます。

3. シーン

        ビジネス ニーズに応じて、ユーザーは独自のクラスターで SLA 関連のパラメーターをカスタマイズできます。たとえば、リアルタイム サービス要件が高いクラスターの場合、JobWaitingTime を可能な限り小さく設定できます。バッチ コンピューティング ジョブが大半を占めるクラスターの場合、JobWaitingTime をより大きな値に設定できます。特定の SLA パラメータおよびパラメータの最適化は、特定のサービスおよび関連するパフォーマンス評価結果と組み合わせる必要があります。

4. 実施原則

1. sla プラグインでは、sla-waiting-timeジョブ リソースの予約を実現するためのパラメーターが提供されます。これは、ジョブが割り当てられずに保持されるsla-waiting-time最大時間Pendingまたは状態です。inqueue完了するとsla-waiting-timeslaプラグインはジョブをinqueueすぐに有効にするように設定しますenqueueその後、プラグインは、ジョブがまだ完了していない場合でも、ジョブslaに事前に割り当てられた Pod の空きリソースをロックします。このようにして、プラグインは大きなジョブの選択とリソース予約を実現し、v1.1.0 の& アクションを置き換えます。allocateReadyslaelectreserve

2.sla-waiting-timeクラスター内の 1 つのジョブまたはすべてのジョブのパラメーターを設定できます。

ジョブの場合、ユーザーは次の形式でジョブメモに設定できます。

apiVersion:batch.volcano.sh/v1alpha1
種類:ジョブ
メタデータ:
  注釈:
    sla-waiting-time:1h2m3s

すべてのジョブについて、ユーザーはプラグイン パラメータのフィールドを次の形式で設定できますsla-waiting-timeslavolcano-scheduler-configmap

  actions: "enqueue, allocate, backfill"
  tiers:
  - plugins:
    - name: priority
    - name: gang
    - name: sla
      arguments:
        sla-waiting-time: 1h2m3s

3.slaプラグインは 3 つのコールバック関数を返します:JobEnqueueableFn:JobPipelinedFnJobOrderFn

(1)JobEnqueueableFnPermit状態のジョブがPendingより長く待機した場合に返されsla-waiting-time他のプラグインがジョブを返したり拒否したりしても、ジョブはenqueueすぐに実行されますinqueueRejectAbstaininqueue

(2)JobPipelinedFnPermitステータスのジョブがinqueueより長く待機した場合に返されsla-waiting-timePipelined他のプラグインがジョブを返したりReject拒否Abstainしたりしても、ジョブはすぐにステータスになりますPipelinedこのようにしてallocate、ジョブの準備がまだ整っていない場合でも、アクションはジョブのポッド用のリソースを予約します。

(3)JobOrderFnenqueue&操作の待機キュー内のこのジョブの順序を調整しますallocateジョブの待機時間に近づくほど sla-waiting-time、プラグインでのジョブのスコアが高くなりますJobOrderFnslaそのため、ジョブが最前部の int 優先キューになる可能性が高くなります。これは、ジョブがより多くのアイドル リソースにアクセスでき、より多くの High を保持できることを意味します。優先順位はinqueueと で割り当てられます。

5. SLAプラグインの実行フローチャート

                                

 6. 参考資料:

アクション | 火山

プラグイン | 火山

マスターの volcano/sla-plugin.md · volcano-sh/volcano · GitHub

おすすめ

転載: blog.csdn.net/lovebaby1689/article/details/126831505