概要
ワークロードの詳細設定のスケジューリングルールを設定することにより、ワークロードの下のPodがクラスター内でスケジューリングされるように指定します。次のユースケースが存在します:
指定されたノードでPodを実行します。
特定のスコープ(スコープ:Availability Zone、モデルなどの属性)を持つノードでPodを実行します。
利用方法
前提条件
ワークロードの詳細設定でスケジューリングルールを設定します。クラスターのKubernetesバージョンは1.7以降である必要があります。
Podを正常にスケジューリングするには、設定したスケジューリングルールが完了した後、ノードにはコンテナをスケジューリングするための空きリソースがあることを確認してください。
カスタマイズされたスケジューリング機能を使用する場合は、ノードに対応するLabelを設定する必要があります。詳細については、ノードLabelの設定をご参照ください。 スケジューリングルールの設定
クラスターがバージョン1.7以降の場合は、ワークロードの作成でスケジューリングルールを設定できます。
実際のニーズに応じて、次の2つのスケジューリングタイプを選択できます:
指定されたノードによるスケジューリング:インスタンス(Pod)は、指定されたルールを持つノードにスケジューリングされて、ノードタグに一致するように設定できます。
カスタマイズされたスケジューリングルールの:インスタンス(Pod)のスケジューリングルールをカスタマイズして、インスタンスタグに一致するようにできます。
スケジューリングルールは、次の2つのモードがあります:
強制的に必要な条件を満たす:スケジューリング中にアフィニティ条件が満たされた場合、対応するnodeにスケジューリングされます。条件を満たすノードがない場合、スケジューリングは失敗します。
可能な限り必要な条件を満たす:スケジューリング中にアフィニティ条件が満たされた場合、対応するnodeにスケジューリングされます。条件を満たすノードがない場合、任意のノードにランダムにスケジューリングされます。
カスタマイズされたスケジューリングルールに複数のスケジューリングルールを追加できます。各ルールのオペレーターの意味は次の通りです。
In:Labelのvalueはリストにあります。
NotIn:Labelのvalueはリストにありません。
Exists:Labelのkeyは存在します。
DoesNotExits:Labelのkeyは存在しません。
Gt:Labelの値がリストの値より大きい(文字列が一致する)。
Lt:Labelの値がリストの値より小さい(文字列が一致する)。
原理の説明
サービスのスケジューリングルールは主に、YamlをKubernetesクラスターにデリバーすることで、KubernetesのAffinity and anti-affinityメカニズムにより、Podが特定のルールに従ってスケジューリングされます。KubernetesのAffinity and anti-affinityメカニズムの詳細については、詳細についてをご参照ください。