kube-scheduler のカスタムパラメーターを変更して、その動作をカスタマイズできます。これにより、Binpack ポリシーや負荷認識スケジューリングなどを有効にして、ニーズに合わせて Pod スケジューリングを制御できます。
前提条件
バージョン 1.20 以降の ACK Managed Cluster Pro、ACK Edge Cluster Pro、ACK LINGJUN Cluster、または ACK Serverless Cluster Pro を作成済みであること。クラスターをアップグレードするには、「クラスターの手動アップグレード」をご参照ください。
制限事項
ACK Pro マネージドクラスターおよび ACK Pro エッジクラスターの場合、スケジューラがカスタムパラメーターをサポートするには、次のバージョン要件を満たす必要があります。
すべての ACK Pro サーバーレスクラスターおよび kube-scheduler がインストールされている LINGJUN クラスターは、カスタムパラメーターをサポートしています。
クラスターバージョン | カスタムパラメーターをサポートするスケジューラバージョン |
1.28 以降 | すべてのバージョンがサポートされています |
1.26 | v1.26.3-aliyun-6.8.7.5a563072 以降 |
1.24 | v1.24.6-ack-3.1 以降 |
1.22 | v1.22.15-ack-2.0 以降 |
1.20 | v1.20.11-9.0-bcaa6001-aliyun 以降 |
操作手順
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、アドオン管理 をクリックします。
[コアコンポーネント] タブで、kube-scheduler コンポーネントを見つけ、カードの右下隅にある [設定] をクリックします。表示されたダイアログボックスで、パラメーターを設定します。
サポートされる機能とカスタムパラメーターは、スケジューラのバージョンによって異なります。さまざまなスケジューラバージョンでサポートされる機能の詳細については、「kube-scheduler」をご参照ください。次の表に、カスタムパラメーターとその使用方法を示します。
設定項目
説明
タイプ
値 (有効値)
デフォルト値
[仮想ノードスケジューリングの有効化]
有効にすると、仮想ノードでの Pod スケジューリングは、ノードアフィニティやアンチアフィニティなどのセマンティクスに従います。
bool
true
false
true
podMaxBackoffSeconds
スケジュールに失敗した Pod の最大バックオフ期間 (秒)。
int
[1,100000]
10
Pod スケジューリングの Binpack ポリシー有効化
Binpack ポリシーを有効または無効にします。
設定例については、後述の「Binpack カスタムパラメーター」セクションをご参照ください。
bool
false
true
false
binpackPluginWeight
他のスコアリングプラグインに対する Binpack プラグインの重み。このパラメーターを設定するには、[Pod スケジューリングのための Binpack ポリシーの有効化] を選択する必要があります。
int
[1,100000]
100
ビンパックリソースの重み
Binpack プラグインのスコアリングにおける各リソースタイプの重み。このパラメーターを設定するには、[Pod スケジューリングのための Binpack ポリシーの有効化] を選択する必要があります。
resourceName: string
resourceWeight: int
resourceName はスキーマによって検証されます。文字、数字、ピリオド (.)、スラッシュ (/)、ハイフン (-) のみを含めることができます。
resourceWeight は 1 から 10000 までの整数です。
cpu:1
memory:1
scorePluginWeights
スコアリング時の各プラグインの重み。
説明NodeResourceFit プラグインの重みは、Binpack プラグインの重みと競合します。[Pod スケジューリングのための Binpack ポリシーの有効化] を選択した場合は、この設定で NodeResourceFit プラグインの重みを設定しないでください。
plugin: string
weight: int
plugin:パブリックリストのプラグインのみがサポートされています。
weight:1 から 10000 までの整数。
plugin: NodeAffinity
weight: 100
[percentageOfNodesToScore]
スケジューリング中にスコアリングする実行可能ノードの割合。
デフォルト値は 0 です。これは、スケジューラがデフォルトの割合のノードをスコアリングすることを意味します。このデフォルトの割合は、クラスターのサイズによって決まり、5% から 50% の範囲です。
int
[0,100]
0
[共有 GPU プラグインのスコアリングの有効化]
共有 GPU 機能 (共有 GPU スケジューリングには AI スイートが必要です) を使用する場合、スケジューラは GPU Pod をスケジューリングする際に、要求された GPU メモリと計算能力が高い GPU を優先します。
bool
false
true
true
Pod スケジューリングの負荷認識スコアリングを有効にする (loadAwareResourceWeight)
負荷認識スケジューリングを有効にします。これには、ack-koordinator コンポーネントがインストールされている必要があります。
bool
false
true
false
loadAwareThreshold
このパラメーターは、ノードフィルタリングのしきい値を指定します。
この値は、[resourceName] フィールドと [resourceWeight] フィールドで構成されます。
[resourceName]:有効な値は [cpu] と [memory] です。
[threshold]:有効な値は 0 から 100 の範囲です。
デフォルトでは、このパラメーターは空のままになっており、ノードフィルタリングは無効になっています。
resourceName: cpu
threshold: 80
負荷認識リソースの重み
この値は、[resourceName] フィールドと [resourceWeight] フィールドで構成されます。
[resourceName]:resourceName パラメーターのスキーマが検証されます。値は
cpuまたはmemoryのみです。[resourceWeight]:有効な値は 1 から 100 までの整数です。
cpu=1
memory=1
loadAwareAggregatedUsageAggregationType
enum
[avg]
p50
[p90]
p95
p99
avg
プリエンプションアルゴリズム
ACK スケジューラはリソースシミュレーションを使用して、低優先度 Pod を排除して高優先度タスクの迅速な起動を保証するかどうかを決定します。サポートされているポリシーは次のとおりです:
Default:Kubernetes のデフォルトのプリエンプションメカニズム。
ElasticQuota:ElasticQuotaTree に基づくプリエンプション。
Auto:クラスターの構成に基づいてプリエンプションポリシーを調整します。
None:無効。
詳細については、「プリエンプションの有効化」をご参照ください。
enum
Default
ElasticQuota
Auto
None
Auto
予約の有効化
リソース予約機能を有効にします。
boolean
true
false
false
フィーチャーゲート
スケジューラで有効になっているフィーチャーゲート。各バージョンでサポートされているフィーチャーゲートについては、kube-scheduler の公式 Kubernetes ドキュメントをご参照ください。
string
該当なし。
Kubernetes コミュニティのフィーチャーゲートと同じです。
次の例では、カスタムパラメーターの使用方法を示します。
Binpack カスタムパラメーター
Binpack ポリシーと Spread ポリシーの比較
ディメンション | Binpack ポリシー | Spread ポリシー |
スケジューリングポリシー |
|
|
特徴 | ノード上のリソースの断片化を減らします。 |
|
利用シーン | 高いノード使用率が要求される利用シーン。 | 高いノードの可用性が要求される利用シーン。 |
Binpack カスタムパラメーターの使用
[Pod スケジューリングのための Binpack ポリシーの有効化] を有効にすることで、Pod スケジューリングに Binpack ポリシーを適用できます。また、他のプラグインに対する Binpack スコアリングプラグインの重みを設定することもできます。重みが大きいほど、Pod が同じノードにスケジュールされる可能性が高くなります。さらに、Binpack プラグインがスコアリングに使用するリソース名と重みを設定できます。リソースの重みが大きいほど、そのリソースがスケジューリングの決定に与える影響が大きくなります。
[コンポーネント管理] ページで、[コアコンポーネント] タブに移動します。kube-scheduler コンポーネントを見つけ、[設定] をクリックします。ダイアログボックスで、Binpack 関連のカスタムパラメーターを設定します。
設定項目 | 設定例の説明 |
Pod スケジューリング用の Binpack ポリシーの有効化 | スイッチをオンにします。 |
[binpackPluginWeight] | Binpack の重みを設定します。通常、これを変更する必要はありません。Binpack ポリシーを有効にしても効果がない場合は、重みを増やすことができます (例:200)。詳細については、「binpack の重み」をご参照ください。 |
異なるリソースに対する Binpack ポリシー | 詳細な設定例については、「MostAllocated 戦略を使用したビンパッキングの有効化」をご参照ください。
|
[Pod スケジューリングのための Binpack ポリシーの有効化] を有効にしても、[binpackResourceWeight] の [resourceName] や [resourceWeight] を設定しない場合、システムは CPU とメモリにデフォルトの Binpack 設定を使用します。これは、次の設定と同等です。

関連ドキュメント
負荷認識スケジューリング機能を使用すると、要求リソースではなく、実際のリソース使用量に基づいて Pod をノードにスケジュールできます。詳細については、「負荷認識スケジューリングの使用」をご参照ください。