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-time
、sla
プラグインはジョブをinqueue
すぐに有効にするように設定しますenqueue
。その後、プラグインは、ジョブがまだ完了していない場合でも、ジョブsla
に事前に割り当てられた Pod の空きリソースをロックします。このようにして、プラグインは大きなジョブの選択とリソース予約を実現し、v1.1.0 の& アクションを置き換えます。allocate
Ready
sla
elect
reserve
2.sla-waiting-time
クラスター内の 1 つのジョブまたはすべてのジョブのパラメーターを設定できます。
ジョブの場合、ユーザーは次の形式でジョブメモに設定できます。
apiVersion:batch.volcano.sh/v1alpha1
種類:ジョブ
メタデータ:
注釈:
sla-waiting-time:1h2m3s
すべてのジョブについて、ユーザーはプラグイン パラメータのフィールドを次の形式で設定できますsla-waiting-time
。sla
volcano-scheduler-configmap
actions: "enqueue, allocate, backfill"
tiers:
- plugins:
- name: priority
- name: gang
- name: sla
arguments:
sla-waiting-time: 1h2m3s
3.sla
プラグインは 3 つのコールバック関数を返します:JobEnqueueableFn
と:JobPipelinedFn
JobOrderFn
(1)JobEnqueueableFn
Permit
状態のジョブがPending
より長く待機した場合に返されsla-waiting-time
、他のプラグインがジョブを返したり拒否したりしても、ジョブはenqueue
すぐに実行されます。inqueue
Reject
Abstain
inqueue
(2)JobPipelinedFn
Permit
ステータスのジョブがinqueue
より長く待機した場合に返されsla-waiting-time
、Pipelined
他のプラグインがジョブを返したりReject
拒否Abstain
したりしても、ジョブはすぐにステータスになりますPipelined
。このようにしてallocate
、ジョブの準備がまだ整っていない場合でも、アクションはジョブのポッド用のリソースを予約します。
(3)JobOrderFn
enqueue
&操作の待機キュー内のこのジョブの順序を調整しますallocate
。ジョブの待機時間に近づくほど sla-waiting-time
、プラグインでのジョブのスコアが高くなりますJobOrderFn
。sla
そのため、ジョブが最前部の int 優先キューになる可能性が高くなります。これは、ジョブがより多くのアイドル リソースにアクセスでき、より多くの High を保持できることを意味します。優先順位はinqueue
と で割り当てられます。
5. SLAプラグインの実行フローチャート