kube-scheduler のカスタム パラメーターを変更して、ビジネス要件に基づいてスケジューラの動作を定義できます。これにより、ポッドのスケジューリングが期待どおりに調整されます。たとえば、binpack アルゴリズムを使用するか、負荷対応スケジューリングを有効にするかを選択できます。
前提条件
ACK Pro マネージドクラスター、ACK Edge Pro マネージドクラスター、ACK Lingjun クラスター、または ACK Serverless Pro マネージドクラスター(Kubernetes 1.20 以降を実行)が作成されていること。クラスターを更新する方法の詳細については、「ACK クラスタを手動でアップグレードする」をご参照ください。
制限事項
次の表は、異なる Kubernetes バージョンを実行する ACK Pro マネージドクラスター および ACK Edge Pro マネージドクラスター でカスタム パラメーターをサポートする kube-scheduler のバージョンを示しています。
kube-scheduler がインストールされた ACK Serverless Pro マネージドクラスター および ACK Lingjun クラスター は、カスタム パラメーターをサポートしています。
Kubernetes バージョン | kube-scheduler バージョン |
≥ 1.28 | すべてのバージョン |
1.26 | ≥ v1.26.3-aliyun-4.1 |
1.24 | ≥ 1.24.6-ack-3.1 |
1.22 | ≥ 1.22.15-ack-2.0 |
1.20 | ≥ v1.20.11-9.0-bcaa6001-aliyun |
手順
ACK コンソール にログインします。左側のナビゲーション ウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーション ウィンドウで、 を選択します。
[コアコンポーネント] タブで、[Kube Scheduler] を見つけ、カードの右下隅にある [構成] をクリックし、[Kube Scheduler パラメーター] ダイアログ ボックスでプロンプトに従ってパラメーターを構成します。
機能とカスタム パラメーターは、kube-scheduler のバージョンによって異なります。異なる kube-scheduler バージョンでサポートされている機能の詳細については、「kube-scheduler」をご参照ください。次の表に、カスタム パラメーターを示します。
パラメーター
説明
タイプ
有効値
デフォルト値
[仮想ノードベースのポッド スケジューリングを有効にする]
ノード アフィニティとポッド分散制約に基づいて、仮想ノードにポッドをスケジュールするかどうかを指定します。
bool
true
false
true
[podMaxBackoffSeconds]
ポッドの再スケジューリングの最大バックオフ遅延(秒単位)。ポッドのスケジューリングに失敗した後、遅延が終了するまでポッドを再スケジューリングすることはできません。
int
[1,100000]
10
[ポッド スケジューリング中に優先的にビンパッキングを使用する]
binpack アルゴリズムを有効にするかどうかを指定します。
詳細については、「カスタム binpack パラメーター」のサンプル構成をご参照ください。
bool
false
true
false
[binpackPluginWeight]
binpack プラグインによって計算されたノード スコアの重み。[ポッド スケジューリング中に優先的にビンパッキングを使用する] も選択する必要があります。
int
[1,100000]
100
[binpackResourceWeight]
binpack プラグインがノード スコアを計算するときの各リソースの重み。[ポッド スケジューリング中に優先的にビンパッキングを使用する] も選択する必要があります。
resourceName: string
resourceWeight: int
resourceName パラメーターに対してスキーマ検証が実行されます。 resourceName パラメーターの値には、文字、数字、ピリオド(.)、スラッシュ(/)、およびハイフン(-)のみを含めることができます。
resourceWeight パラメーターの値は、1 から 10000 までの整数である必要があります。
cpu:1
memory:1
[scorePluginWeights]
ノード スコアの計算に使用される各プラグインの重み。
説明NodeResourceFit プラグインの重みは、binpack プラグインの重みと競合します。したがって、[ポッド スケジューリング中に優先的にビンパッキングを使用する(選択されていない場合、ポッドはノード間で均等に分散される)] を選択した場合は、このパラメーターに NodeResourceFit プラグインの重みを追加しないでください。
plugin: string
weight: int
プラグインドロップダウン リストに表示されているプラグインのみを選択できます。
weight パラメーターの値は、1 から 10000 までの整数である必要があります。
plugin: NodeAffinity
weight: 100
[percentageOfNodesToScore]
ポッド スケジューリングに適したノードの割合。
デフォルト値:0。デフォルト値を使用すると、クラスター内のノードの一定割合がスコアリングされます。割合は、クラスター サイズに基づいて 5% から 50% の範囲です。
int
[0,100]
0
[GPU 共有のノード スコアリングを有効にする]
GPU 共有を使用する場合、より多くのメモリと計算能力を要求する GPU に GPU アクセラレーテッド ポッドをスケジュールするかどうかを指定します。 GPU 共有を使用するには、クラウドネイティブ AI スイートをインストールする必要があります。
bool
false
true
true
[負荷対応スケジューリングを有効にする(デフォルトでは選択されていません)]
負荷対応スケジューリングを有効にするかどうかを指定します。負荷対応スケジューリングを有効にするには、ack-koordinator コンポーネントをインストールする必要があります。
bool
false
true
false
[loadAwareThreshold]
このパラメーターは、ノード フィルタリングのしきい値を指定します。
[resourceName] フィールドと [resourceWeight] フィールドで構成されます。
[resourceName]:有効な値は、[cpu] と [memory] です。
[threshold]:有効な値の範囲は 0 ~ 100 です。
デフォルトでは、このパラメーターは空のままになり、ノード フィルタリングが無効になります。
resourceName: cpu
threshold: 80
[loadAwareResourceWeight]
このパラメーターは、ノードのソートに使用されるノード スコアの計算に使用するリソースの重みを指定します。このパラメーターは、[ポッド スケジューリング中に負荷対応ノード スコアリングを有効にするかどうかを指定します] を選択した後に使用できます。
[resourceName] フィールドと [resourceWeight] フィールドで構成されます。
[resourceName]:resourceName パラメーターのスキーマが検証されます。値は
cpu
またはmemory
のみ可能です。[resourceWeight]:有効な値は、1 ~ 100 の整数です。
cpu=1
memory=1
[loadAwareAggregatedUsageAggregationType]
このパラメーターは、統計のデータ集計のタイプを指定します。有効な値:
[avg]:平均値を計算します。
[p50]:統計の 50% を計算します。
[p90]、[p95]、[p99]:統計の 90% を計算し、統計の 95% を計算し、統計の 99% を計算します。
enum
[avg]
[p50]
[p90]
[p95]
[p99]
avg
[preemptionAlgorithm]
ACK Scheduler は、リソース シミュレーションを通じて優先度の低いポッドをエビクトするかどうかを決定し、優先度の高いワークロードの迅速な起動を優先します。サポートされている戦略:
Default:Kubernetes コミュニティ標準のプリエンプション
ElasticQuota:ElasticQuotaTree に基づくリソース プリエンプション
Auto:クラスターの仕様に基づく適応プリエンプション ポリシー
None:プリエンプションを無効にする
詳細については、「プリエンプションを有効にする」をご参照ください。
enum
Default
ElasticQuota
Auto
None
Auto
[enableReservation]
リソース予約機能を有効にするかどうかを指定します。
boolean
true
false
false
[featureGates]
スケジューラによって有効化される機能ゲート。さまざまなバージョンのスケジューラでサポートされている機能ゲートの詳細については、「kube-scheduler ドキュメント」を参照してください。
string
該当なし
ACK は、オープンソースの Kubernetes と同じ機能ゲートを使用します。
次のセクションでは、カスタム パラメーターを構成する方法の例を示します。
カスタム binpack パラメーター
binpack アルゴリズムと spread アルゴリズムの比較
ディメンション | binpack | spread |
スケジューリング ポリシー |
|
|
特徴 | このアルゴリズムは、ノード上のリソース フラグメントを削減します。 |
|
シナリオ | このアルゴリズムは、ノードのリソース使用率を向上させるシナリオに適用できます。 | このアルゴリズムは、ノードの高可用性を保証するシナリオに適用できます。 |
サンプル構成
[ポッドスケジューリング中にビンパッキングを優先的に使用する] を選択し、binpack プラグインによって計算されたノードスコアの重みを指定できます。重みが大きいほど、ポッドが同じノードにスケジュールされる可能性が高くなります。また、binpack プラグインがノードスコアを計算する際に基づくリソース名と、ノードスコア計算における各リソースの重みを指定することもできます。値が大きいほど、ノードスコアへの影響が大きくなります。
[アドオン] ページの [コアコンポーネント] タブで、[Kube Scheduler] を見つけ、[構成] をクリックし、ダイアログボックスで表示される binpack パラメーターを構成します。
パラメーター | 説明 |
[Pod スケジューリング中に優先的にビンパッキングを使用する] | このパラメーターは、ビンパックアルゴリズムを有効にします。 |
binpackPluginWeight | このパラメーターは、ビンパックプラグインによって計算されたノードスコアの重みを指定します。ほとんどの場合、デフォルト設定を使用できます。 binpack を有効にした後、Pod が期待どおりにスケジュールされない場合は、200 などのより大きな値に重みを設定できます。 詳細については、「binpack weight」をご参照ください。 |
ビンパックプラグインがノードスコアと各リソースの重みを計算する際に基づくリソース名を指定します。 | 詳細については、「MostAllocated 戦略を使用したビンパッキングの有効化」をご参照ください。
|
[優先的にビンパッキングを使用して Pod をスケジュールする] を選択し、[resourceName] パラメーターと [resourceWeight] パラメーターを構成しない場合、ノードスコア計算には、次の図に示すデフォルトの CPU とメモリの値が使用されます。
参照資料
実際の リソース 使用量に基づいてノードをスケジュールする負荷対応スケジューリングを有効にすることをお勧めします。 リソース のリクエスト量に基づいてスケジュールするのではなく。詳細については、「負荷対応スケジューリングを使用する」をご参照ください。