所屬技術領域:
K8s
|名詞定義|
Kubernetes排程程式是一項政策豐富,可感覺拓撲,特定于工作負載的功能,會顯着顯著影響可用性,性能和容量。排程程式需要考慮單個和集體的資源需求,服務品質需求,硬體/軟體/政策限制,親和力和反親和力規範,資料位置,工作負載間的幹擾,期限等。特定于工作負載的需求将在必要時通過API公開。
|技術特點|
怎麼配置排程器
怎麼啟動一個排程器,這裡有兩種情況:
-預設配置(——write—config—to);
-配置-檔案(——config)。
配置檔案解釋
-schedulerName:負責Pod.SchedulerName的排程
-algorithmSource:配置算法
-hardPodAffinitySymmetricWeight:配置Affnity權重
-percentageOfNodesToScore:filter到的節點數跟總節點的數的比率達到這個值的時候退出filter
-bindTimeoutSeconds:binging階段的逾時時間
怎麼啟動一個排程器
第一種我們可以通過預設配置啟動排程器,什麼參數都不指定;
第二種我們可以通過指定配置的排程檔案。
如果我們通過預設的方式啟動的話,想知道預設配置啟動的參數是哪些?可以用 --write-config-to 可以把預設配置寫到一個指定檔案裡面。
下面來看一下預設配置檔案,如下圖所示:

第一個 algorithmSource 是算法提供者,目前提供三種方式:Provider、file、configMap,後面會介紹這塊;
第二個 percentageOfNodesToscore,就是排程器提供的一個擴充能力,能夠減少 Node 節點的取樣規模;
第三個 SchedulerName 是用來表示排程器啟動的時候,負責哪些 Pod 的排程;如果沒有指定的話,預設名稱就是 default-scheduler;
第四個 bindTimeoutSeconds,是用來指定 bind 階段的操作時間,機關是秒;
第五個 ClientConnection,是用來配置跟 kube-apiserver 互動的一些參數配置。比如 contentType,是用來跟 kube-apiserver 互動的序列化協定,這裡指定為 protobuf;
第六個 disablePreemption,關閉搶占協定;
第七個 hardPodAffinitySymnetricweight,配置 PodAffinity 和 NodeAffinity 的權重是多少。
algorithmSource
這裡介紹一下過濾器、打分器等一些配置檔案的格式,目前提供三種方式:
-Provider
-file
-configMap
如果指定的是 Provider,有兩種實作方式:
一種是 DefaultPrivider;
一種是 ClusterAutoscalerProvider。
ClusterAutoscalerProvider 是優先堆疊的,DefaultPrivider 是優先打散的。關于這個政策,當你的節點開啟了自動擴容,盡量使用 ClusterAutoscalerProvider 會比較符合你的需求。
這裡看一下政策檔案的配置内容,如下圖所示:
這裡可以看到配置的過濾器 predicates,配置的打分器 priorities,以及我們配置的擴充排程器。這裡有一個比較有意思的參數就是:alwaysCheckAllPredicates。它是用來控制當過濾清單有個傳回 false 時,是否繼續往下執行?預設的肯定是 false;如果配置成 true,它會把每個插件都走一遍。
|資料來源|
名詞定義:
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/