kubernetes實踐之三十八:Pod排程

百聯達發表於2018-05-13
一: Deployment/RC: 全自動排程
Deployment或RC的主要功能之一就是自動部署一個容器應用的多份副本,以及持續監控副本的數量,在叢集內始終維持使用者指定的副本數量。

二: NodeSelector: 定向排程
可以透過Node的標籤(Label)和Pod的nodeSelector屬性匹配,將Pod排程到指定節點。

三: NodeAffinity: 親和性排程
用於替換NodeSelector的全新排程策略,目前有兩種節點親和性表達。
1. RequiredDuringSchedulingIgnoredDuringExecution: 必須滿足指定的規則才可以排程Pod到Node上,相當於硬限制。
2. PreferredDuringSchedulingIgnoredDuringExecution: 強調優先滿足指定規則,排程器會嘗試排程Pod到Node上,但並不強求,相當於軟限制。多個優先順序規則還可以設定權重值,以定義執行的先後順序。

如果同時定義了nodeSelector和nodeAffinity,那麼必須兩個條件都得到滿足,Pod才能最終執行在指定的Node上。

四:PodAffinity: 親和與互斥排程策略

五: Taints和Tolerations(汙點和容忍)
Taint需要和Toleration配合使用,讓Pod避開那些不適合的Node. 在Node上設定一個或多個Taint之後,除非Pod明確生命能夠容忍這些“汙點”,否則無法在這些Node上執行。Toleration是Pod的屬性,讓Pod能夠執行在標註了Taint的Node上。

六: DaemonSet: 在每個Node上排程一個Pod

七: Job批處理排程
1.Job Template Expansion模式:一個Job物件對應一個待處理的Work item,有幾個Work item就產生幾個獨立的Job,通常適合Work item 數量少,每個Work item處理的資料量比較大的場景。

2.Queue with Pod Per Work Item模式:採用一個任務佇列存放Work item,一個Job物件作為消費者去完成這些Work item,在這種模式下,Job會啟動N個Pod,每個Pod對應一個Work item.

3.Queue with Variable Pod Count 模式:也是採用一個任務佇列存放Work item,一個Job物件作為消費者去完成這些Work item,但與上面的模式不同,Job啟動的Pod數量是可變的。

八: Cronjob: 定時任務
類似於Linux Cron的定時任務Cron Job.

九: 自定義排程

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2154413/,如需轉載,請註明出處,否則將追究法律責任。

相關文章