iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Kubernetes

Think Again Kubernetes系列 第 18

初探以及安裝 kube-scheduler-simulator

  • 分享至 

  • xImage
  •  

我們要怎麼測試排程?

我們在前面介紹了在常見的兩個排程設定,但是在實務上會有一個很實際的問題:我們要怎麼測試?

最直覺地抓住第一個想法,就是創造一個 Kubernetes Labs 作為實驗環境,然後佈署一些 Node,然後佈署排程設定測試。

但是這樣會有幾個問題:

測試成本與可行性:如果是私有雲,不會隨時都有足夠數量的機器讓你建置這個測試環境,如果是公有雲,你理想上可以部屬很多機器,但是你錢也要很多。

測試大集群:如果是大規模集群的佈署,100+ Node,就代表你要啟動 100+ Node 加入,Node 的加入以及退出都需要時間,還經常需要對特定的 Node 打標籤,但是這些設定在測試環境銷毀之後很難在下一次重用,因為 Node Label 通常來自於 kubelet

除錯與分析:複雜的排程設定會互相影響,比如說 Affinity 以及 topologySpreadConstraints 來設定排程,為了細膩的設定,我們會需要知道這兩個 Plugin 的分數為何。

舉一個常見的應用情境:如果要測試 DR 發生的排程,這樣會花太多時間以及費用在測試。

為了解決這個問題,我們迎來了 kube-scheduler-simulator 這個專案。

kube-scheduler-simulator

kube-scheduler-simulator 從名字看來,就是一個可以模擬 Kubernetes Scheduling 的工具,它提供了以下功能

建立一個 fake cluster,讓我們可以用很小的資源佈署數千個 Node 以及 Pod

提供 debuggable scheduler

由於背後接的依然是 Kubernetes API Server,所以可以用 kubectl 相關工具測試,原生也提供 UI 介面來操作

如何安裝 kube-scheduler-simulator

由於 go plugin 要求強一致編譯,因此,我們要從 source code 開始編譯 kube-scheduler-simulator,我們會用 Docker compose 來做這件事

git clone git@github.com:kubernetes-sigs/kube-scheduler-simulator.git
cd kube-scheduler-simulator

make docker_build
make docker_up_local

訪問本地的 3000 端口,就可以看到了
http://localhost:3000/

https://ithelp.ithome.com.tw/upload/images/20240927/20169135Thn4qbQ7Cy.png

這樣就安裝好 kube-scheduler-simulator 了,接下來文章就要來測試各種排程策略啦

https://github.com/kubernetes-sigs/kube-scheduler-simulator


上一篇
用 Filter 以及 Score 分析排程相關設定
下一篇
利用 Kwok 測試排程策略
系列文
Think Again Kubernetes31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言