すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:kube-schedulerのカスタムパラメーター

最終更新日:Nov 10, 2024

kube-schedulerのカスタムパラメーターを変更して、ビジネス要件に基づいてスケジューラがどのように機能するかを定義できます。 たとえば、binpackアルゴリズムを使用するか、負荷認識スケジューリングを有効にするかを選択できます。

前提条件

Kubernetes 1.20以降を実行するACK ProクラスターACK Edge ProクラスターACK Lingjunクラスター、またはACK Serverless Proクラスターが作成されます。 クラスターを更新する方法の詳細については、「手動で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

手順

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [コアコンポーネント] タブで、[Kube Scheduler] を見つけ、Kube Schedulerカードの右下隅にある [設定] をクリックし、プロンプトに従って [Kube Schedulerパラメーター] ダイアログボックスでパラメーターを設定します。

    機能とカスタムパラメーターは、kube-schedulerのバージョンによって異なります。 異なるバージョンのkube-schedulerでサポートされている機能の詳細については、「kube-scheduler」をご参照ください。 次の表に、カスタムパラメーターを示します。

    パラメーター

    説明

    タイプ

    有効値

    デフォルト値

    podMaxBackoffSeconds

    ポッドの再スケジューリングの最大バックオフ遅延 (秒単位) 。 ポッドのスケジュールに失敗した後、遅延が終了するまでポッドを再スケジュールできません。

    INT

    [1,100000]

    10

    ポッドスケジューリング中にビンパッキングを使用

    binpackアルゴリズムに基づいてポッドをスケジュールするかどうかを指定します。

    詳細については、「カスタムbinpackパラメーター」のサンプル設定をご参照ください。

    BOOL

    • false

    • true

    false

    binpackPluginWeight

    binpackプラグインによって計算されたノードスコアの重み。 [ポッドスケジューリング中にビンパッキングを使用] も選択する必要があります。

    INT

    [1,100000]

    100

    binpackResourceWeight

    binpackプラグインがノードスコアを計算するときの各リソースの重み。 [ポッドスケジューリング中にビンパッキングを使用] も選択する必要があります。

    • resourceName: ストリング

    • resourceWeight: INT

    • スキーマ検証は、resourceNameパラメーターで実行されます。 resourceNameパラメーターの値には、英数字、ピリオド (.) 、スラッシュ (/) 、およびハイフン (-) のみを使用できます。

    • resourceWeightパラメーターの値は、1から10000までの整数である必要があります。

    • cpu:1

    • メモリ: 1

    scorePluginWeights

    ノードスコアの計算に使用される各プラグインの重み。

    説明

    NodeResourceFitプラグインの重みとbinpackプラグインの重みが競合します。 したがって、[ポッドスケジューリング中にビンパッキングを使用する] ([選択しない場合、ポッドはノード間で均等に分散されます]) を選択した場合、このパラメーターにNodeResourceFitプラグインの重みを追加しないでください。

    • プラグイン: STRING

    • 重量: INT

    • プラグインのドロップダウンリストに表示されているプラグインだけを選択できます。

    • weightパラメーターの値は、1から10000までの整数である必要があります。

    • プラグイン: NodeAffinity

    • 重量: 100

    connectionQPS

    Kubernetes APIサーバーの1秒あたりの最大クエリ数 (QPS) 。

    INT

    [1,1000]

    50

    connectionBurst

    Kubernetes APIサーバーの最大QPSに達したときのバーストQPS。

    INT

    [1,1000]

    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: 有効な値はcpumemoryです。

    • threshold: 有効な値の範囲は0から100です。

    デフォルトでは、このパラメータは空のままになり、ノードフィルタリングは無効になります。

    • resourceName: cpu

    • しきい値: 80

    loadAwareResourceWeight

    このパラメーターは、ノードソートのノードスコアの計算に使用するリソースの重みを指定します。 このパラメーターは、[負荷対応スケジューリングの有効化] を選択した後に使用できます。

    値は、resourceNameフィールドとresourceWeightフィールドで構成されます。

    • resourceName: resourceNameパラメーターのスキーマが検証されました。 値はcpuまたはmemoryのみです。

    • resourceWeight: 有効値は1から100の範囲の整数です。

    cpu=1

    memory=1

    loadAwareAggregatedUsageAggregationType

    このパラメーターは、統計のデータ集計のタイプを指定します。 有効な値:

    • avg: 平均値を計算します。

    • p50: 統計の50% を計算します。

    • p90p95p99: 統計の90% を計算し、統計の95% を計算し、統計の99% を計算する。

    ENUM

    • avg

    • p50

    • p90

    • p95

    • p99

    avg

    featureGates

    スケジューラによって有効にされる機能ゲート。 さまざまなバージョンのスケジューラでサポートされているフィーチャゲートの詳細については、「kube-schedulerのドキュメント」をご参照ください。

    String

    非該当

    ACKは、オープンソースKubernetesと同じ機能ゲートを使用します。

次のセクションでは、カスタムパラメーターの設定方法の例を示します。

カスタムbinpackパラメーター

binpackアルゴリズムとspreadアルゴリズムの比較

寸法

binpack

スプレッド

スケジューリングポリシー

  • このアルゴリズムが使用される場合、システムは、リソース利用率が高いノードにポッドを優先的にスケジュールする。

  • このアルゴリズムを使用すると、システムは1つのノードを複数のポッドと優先的に共有します。

  • このアルゴリズムが使用される場合、システムは、リソース利用率が最も低いノードにポッドを優先的にスケジュールする。

  • このアルゴリズムを使用すると、システムは各ポッドに1つのノードを割り当てようとします。

機能

このアルゴリズムは、ノード上のリソースフラグメントを低減する。

  • このアルゴリズムは、Kubernetesのデフォルトのリソーススケジューリングポリシーです。

  • このアルゴリズムは、クラスタ内のノード間で比較的均一なポッド分布を保証する。

  • このアルゴリズムは、ノード上にリソース断片をもたらす。

シナリオ

このアルゴリズムは、ノードのリソース使用率を改善するシナリオに適用できます。

このアルゴリズムは、ノードの高可用性を保証するシナリオに適用できます。

カスタムbinpackパラメーターの設定

[ポッドスケジューリング中にビンパッキングを使用する] を選択し、binpackプラグインによって計算されたノードスコアの重みを指定できます。 重みが大きいほど、ポッドが同じノードにスケジュールされる確率が高くなります。 リソース名を指定することもできます。これに基づいて、binpackプラグインがノードスコアを計算し、ノードスコアの計算で各リソースの重みを計算します。 値が大きいほど、ノードスコアへの影響が大きいことを示す。

[アドオン] ページの [コアコンポーネント] タブで、[Kube Scheduler] を見つけ、[設定] をクリックし、プロンプトに従ってダイアログボックスでbinpackパラメーターを設定します。

パラメーター

説明

ポッドスケジューリング中にビンパッキングを使用

このパラメーターは、binpackアルゴリズムを有効にします。

binpackPluginWeight

このパラメーターには、binpackプラグインによって計算されたノードスコアの重みを指定します。 ほとんどの場合、デフォルト設定を使用できます。 binpackを有効にした後にポッドが期待どおりにスケジュールされない場合は、重みを200などのより大きな値に設定できます。 詳細は、「binpackの重み」をご参照ください。

binpackプラグインがノードスコアと各リソースの重みを計算するためのリソース名を指定します。

詳細については、「MostAllocated戦略を使用したビンパッキングの有効化」をご参照ください。

  • scoringStrategy:resourcesセクションのnameおよびweightパラメーターは、ノードスコア計算セクションの各リソースの重みを指定します。

  • scoringStrategy:resourcesセクションのnameおよびweightパラメーターは、ACKコンソールのresourceNameおよびresourceWeightパラメーターに対応しています。

resourceNameおよびresourceWeightパラメーターを設定せずに [ポッドスケジューリング中にビンパッキングを使用する] を選択した場合、次の図のデフォルトのCPUおよびメモリ設定がノードスコアの計算に使用されます。

cpu

関連ドキュメント

要求されたリソースの量ではなく、実際のリソース使用量に基づいてノードをスケジュールする負荷認識スケジューリングを有効にすることを推奨します。 詳細については、「負荷対応スケジューリングの使用」をご参照ください。