binpack、負荷認識スケジューリング、プリエンプションなどの kube-scheduler の動作をカスタマイズして、クラスター内の Pod の配置を制御します。
前提条件
Kubernetes 1.20 以降を実行する ACK Pro クラスター、ACK Edge Pro クラスター、ACK Lingjun クラスター、または ACK Serverless Pro クラスターが必要です。 Kubernetes のバージョンを更新するには、「クラスターを手動でアップグレード」をご参照ください。
制限事項
ACK Pro クラスターおよび ACK Edge Pro クラスターでカスタムパラメーターをサポートする kube-scheduler のバージョンは、Kubernetes のバージョンごとに次のとおりです。
kube-scheduler がインストール済みの ACK Serverless Pro クラスターおよび ACK Lingjun クラスターは、カスタムパラメーターをサポートしています。
Kubernetes バージョン | kube-scheduler バージョン |
≥ 1.28 | すべてのバージョン |
1.26 | ≥ v1.26.3-aliyun-6.8.7.5a563072 |
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 のバージョンによって異なります。 バージョン固有の機能については、「Container Service for Kubernetes:kube-scheduler」をご参照ください。
パラメーター
説明
タイプ
有効値
デフォルト値
[仮想ノードベースの Pod スケジューリングの有効化]
ノードアフィニティと Pod の分散制約に基づいて、仮想ノードに Pod をスケジューリングするかどうかを指定します。
bool
true
false
true
[podMaxBackoffSeconds]
スケジューリングに失敗した Pod の再試行間の最大バックオフ間隔 (秒単位) です。 2 つのスケジューリング試行の間隔は、この値以下である必要があります。
int
[1,100000]
10
[Pod スケジューリング中に binpack を優先的に使用]
binpack アルゴリズムを有効にするかどうかを指定します。
設定例については、「カスタム binpack パラメーター」をご参照ください。
bool
false
true
false
[binpackPluginWeight]
binpack プラグインのノードスコアの重みです。 このパラメーターを使用するには、[Pod スケジューリング中に binpack を優先的に使用] を有効にする必要があります。
int
[1,100000]
100
[binpackResourceWeight]
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]
Pod のスケジューリング対象としてスコアリングするノードの割合です。
デフォルト値: 0。0 に設定すると、クラスターのサイズに基づいて 5%~50% のノードがスコアリングされます。
int
[0,100]
0
[GPU 共有のためのノードスコアリング]
共有 GPU スケジューリング (AI スイートが必要) を使用する場合、GPU アクセラレーション Pod を、より高いメモリとコンピューティング要求に対応できる GPU にスケジューリングします。
bool
false
true
true
[Pod スケジューリング中の負荷認識スコアリング]
負荷認識スケジューリングを有効にするかどうかを指定します。
ack-koordinatorコンポーネントが必要です。bool
false
true
false
[loadAwareThreshold]
このパラメーターは、ノードフィルタリングのしきい値を指定します。
値は[resourceName] フィールドおよび[resourceWeight] フィールドで構成されます。
[resourceName]: 有効な値は [cpu] と [memory] です。
[しきい値]: 有効な値は 0~100 です。
デフォルトでは、このパラメーターは空のままになり、ノードフィルタリングは無効になります。
resourceName: cpu
threshold: 80
[loadAwareResourceWeight]
このパラメーターは、ノードのソートに使用されるノードスコアを計算するためのリソースの重みを指定します。 このパラメーターは、[Pod スケジューリング中の負荷認識スコアリング] を選択した後に利用可能になります。
値は [resourceName] と [resourceWeight] の各フィールドで構成されます。
[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 は、リソースシミュレーションにより、優先度の高いワークロードの迅速な起動を優先して、優先度の低い Pod を退去させるかを判断します。サポートされている戦略:
Default: Kubernetes コミュニティの標準プリエンプション
ElasticQuota:
ElasticQuotaTreeに基づくリソースプリエンプションAuto: クラスターの仕様に基づく適応型プリエンプションポリシー
None: プリエンプションを無効化
詳細については、「プリエンプションの有効化」をご参照ください。
enum
Default
ElasticQuota
Auto
None
Auto
[enableReservation]
リソース予約を有効にするかどうかを指定します。
bool
true
false
false
[featureGates]
スケジューラーが有効にするフィーチャーゲートです。 バージョン固有のサポートについては、「kube-scheduler のドキュメント」をご参照ください。
string
該当なし
ACK は、オープンソースの Kubernetes と同じフィーチャーゲートを使用します。
以下に、binpack の設定例を示します。
カスタム binpack パラメーター
binpack と spread アルゴリズムの比較
ディメンション | binpack | spread |
スケジューリングポリシー |
|
|
特徴 | ノード上のリソースの断片化を軽減します。 |
|
シナリオ | ノードのリソース使用率の向上に最適です。 | 高可用性が求められるワークロードに最適です。 |
カスタム binpack パラメーターの設定
[Pod スケジューリング中に binpack を優先的に使用] を選択し、binpack プラグインの重みを設定します。 重みが大きいほど、Pod が同じノードに集約配置される可能性が高くなります。 ノードスコア計算のために、リソース名とその重みを設定します。 リソースの重みが大きいほど、そのリソースが Pod のスケジューリングに与える影響が大きくなります。
[アドオン] ページの [コアコンポーネント] タブで [Kube Scheduler] を見つけ、[設定] をクリックして binpack パラメーターを設定します。
パラメーター | 説明 |
[Pod スケジューリング中に binpack を優先的に使用] | binpack アルゴリズムを有効にします。 |
[binpackPluginWeight] | binpack プラグインのノードスコアの重みです。 ほとんどの場合、デフォルト値を使用します。 Pod のスケジューリングが期待どおりでない場合は、重みを増やします (例: [200])。 詳細については、「binpack の重み」をご参照ください。 |
binpack のノードスコア計算用のリソース名と重み。 | 「MostAllocated 戦略を使用した binpack の有効化」をご参照ください。
|
[resourceName] と [resourceWeight] を設定せずに [Pod のスケジューリング中にビンパッキングを優先的に使用する] を選択した場合、ノードスコアの計算には、以下に示すデフォルトの CPU とメモリの設定が使用されます。 デフォルトは、resourceName が cpu で resourceWeight が 1、および resourceName が memory で resourceWeight が 1 となります。

関連ドキュメント
要求された量ではなく、実際のリソース使用量に基づいて Pod をスケジューリングするには、負荷認識スケジューリングを有効化してください。