K 8 sのスケジューリングポリシー

1823 ワード

ScuedulorはK 8 sのスケジューラです
shedulerは単独のプログラムとして実行され、起動後もAPI Serverを堅牢に維持し、取得するPodSpec.NodeNameは空のpodであり、各podに対してbindingが作成され、そのpodがどのノードに配置されるべきかを示す
 
Kubernetesのスケジューラはプラグイン化された形式で実現され、ユーザーのカスタマイズと二次開発を容易にする.ユーザーはスケジューラをカスタマイズし、プラグインとしてKubernetesと統合したり、他のスケジューラを統合したりすることができ、異なるタイプのタスクをスケジュールしやすくなります.
Kubernetesスケジューラのソースコードはkubernetes/plugin/にあり、一般的なコードディレクトリ構造は以下の通りである.
kubernetes/plugin/pkg/  
`-- scheduler               //                       
|-- algorithm
|   |-- predicates       //      
|   `-- priorities         //      
|       `-- util
|-- algorithmprovider
|   `-- defaults          //         

Predicate —— ,
  • PodFitsResources:ノード上の残りのリソースがpod要求のリソース
  • より大きいかどうか
  • PodFitsHost:podがNodeNameを指定している場合は、ノード名がNodeNameと一致するかどうかを確認します.
  • PodFitsHostPorts:ノードで既に使用するportがpod出願のportと衝突するかどうか
  • .
  • PodSelectorMatches:podで指定されたlabelと一致しないノード
  • をフィルタリングする
  • NoDiskConflict:mountのvolumeとpodで指定されたvolumeは、両方が読み取り専用
  • でない限り衝突しません.
    predicate中に適切なノードがない場合、podは条件を満たすノードが現れるまでpending状態になります.
    Prioritiesの第2段階で、複数の条件を満たすノードが発生した場合、優先度はどのように計算されますか?
  • BalancedResourceAllocation:ノード上のCPUとMemoryの使用率が近いほど重みが高くなります.これは上と一緒に使うべきで、単独で
  • を使うべきではありません.
  • ImageLocalityPriority:ミラーを使用するノードが既に存在する傾向があり、ミラーの総サイズ値が大きいほど重みが
  • 高くなる.
    Kubernetesのスケジューリングポリシーは、主にグローバルスケジューリングとランタイムスケジューリングの2つに分けられます.ここで、グローバルスケジューリングポリシーはスケジューラの起動時に構成され、実行時スケジューリングポリシーは主に選択ノード(
    NodeSelector,ノード親和性(nodeAffinity),pod親和性と逆親和性(podAffinityとpodAntiAffinity).Node Affinity、
    podAffinity/AntiAffinityおよび後述の汚点(Taints)や許容(tolerations)などの特性は、Kubertes 1.6ではいずれもBeta段階にある.
    転載先:https://www.cnblogs.com/spillage/p/10429800.html