[英]Kubernetes pods N:M scheduling how-to
批處理計算,蒙特卡洛(Monte Carlo),使用Docker映像,在Google雲上運行並由Kubernetes管理的多個作業。 沒有復制控制器,只有具有NoRestart策略的多個Pod將計算的有效負載傳遞到我們的服務器。 到現在為止還挺好。 問題是,我有N
節點/小兵的集群,並且有M
個作業要計算,其中M > N
因此,我想立即觸發M
Pod,並告訴Kubernetes以這樣的方式調度它,以便在給定的時間僅N
正在運行,而其他所有都保持為Pending狀態。 一旦完成一個Pod,就計划將下一個Pod從Pending轉到Running,依此類推,以此類推,直到完成所有M
Pod。
有可能這樣做嗎?
是的,您可以讓他們都要求一個資源,每個節點上只有一個資源,那么調度程序一次將不能調度N個以上的資源。 最常見的方法是讓每個Pod在其containers
規范的ports
部分中要求一個hostPort
。
但是,我不能完全確定為什么您要將系統限制為每個節點一個這樣的Pod。 如果有足夠的資源可在每個節點上一次運行多個資源,則應加快您的工作速度,使其運行。
僅作記錄,在與Alex討論,反復試驗和對好的數字進行二進制搜索之后,對我有用的是將Pod JSON中的CPU資源限制設置為:
"resources": {
"limits": {
"cpu": "490m"
}
}
我不知道這個特定的值如何以及為什么會影響Kubernetes調度程序,但是它使節點一直在運行任務,每個節點在任何給定時刻都只有一個Pod在運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.