天天看點

Kubernetes必備知識: 配置排程器

所屬技術領域:

K8s

|名詞定義|

Kubernetes排程程式是一項政策豐富,可感覺拓撲,特定于工作負載的功能,會顯着顯著影響可用性,性能和容量。排程程式需要考慮單個和集體的資源需求,服務品質需求,硬體/軟體/政策限制,親和力和反親和力規範,資料位置,工作負載間的幹擾,期限等。特定于工作負載的需求将在必要時通過API公開。

|技術特點|

 怎麼配置排程器

怎麼啟動一個排程器,這裡有兩種情況:

-預設配置(——write—config—to);

-配置-檔案(——config)。

配置檔案解釋

-schedulerName:負責Pod.SchedulerName的排程

-algorithmSource:配置算法

-hardPodAffinitySymmetricWeight:配置Affnity權重

-percentageOfNodesToScore:filter到的節點數跟總節點的數的比率達到這個值的時候退出filter

-bindTimeoutSeconds:binging階段的逾時時間

 怎麼啟動一個排程器

第一種我們可以通過預設配置啟動排程器,什麼參數都不指定;

第二種我們可以通過指定配置的排程檔案。

如果我們通過預設的方式啟動的話,想知道預設配置啟動的參數是哪些?可以用 --write-config-to 可以把預設配置寫到一個指定檔案裡面。

下面來看一下預設配置檔案,如下圖所示:

Kubernetes必備知識: 配置排程器

第一個 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 會比較符合你的需求。

這裡看一下政策檔案的配置内容,如下圖所示:

Kubernetes必備知識: 配置排程器

這裡可以看到配置的過濾器 predicates,配置的打分器 priorities,以及我們配置的擴充排程器。這裡有一個比較有意思的參數就是:alwaysCheckAllPredicates。它是用來控制當過濾清單有個傳回 false 時,是否繼續往下執行?預設的肯定是 false;如果配置成 true,它會把每個插件都走一遍。

|資料來源|

名詞定義:

https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/

繼續閱讀