控制器: 用來控制Pod的具體狀態和行爲網絡
Pod 分類less
自主式Pod : Pod退出, 此類型Pod不會被建立. spa
控制器Pod : 在控制器的生命週期始終維持Pod的副本數量. (就算Pod死亡, 也會自動建立維持Pod的數量)日誌
控制器分類blog
ReplicationController (RC), ReplicaSet(RS支持集合式的selector): 副本控制器生命週期
RS和Deploment關係, => Deploment經過RS來控制Pod部署
Deployment : it
爲Pod和ReplicaSet提供一個聲明式方法,用來代替ReplicationController來方便管理應用,典型的場景有:io
1>定義Deployment來建立Pod和ReplicaSet集羣
2>滾動升級和回滾應用
3>擴容和縮容
4>暫停和繼續Deploment
DaemonSet
確保所有(一些)Node上運行一個Pod副本. 當有Node加入集羣,會爲他們新增一個Pod,刪除DaemonSet將會刪除它建立的Pod.
使用場景:
運行集羣的存儲daemon,
每一個Node的日誌收集, fluentd ,logtash
每一個Node的監控程序.
Job
負責批量任務,僅執行一次任務, 保證批處理任務一個或多個Pod成功結束
CronJob
定時調度某個時間執行一次或循環屢次執行
StatefulSet
做爲Controller爲Pod提供惟一的標識 , 證部署和scale的順序.
StatefulSet用來解決有狀態服務的問題, 場景以下:
1>穩定的持久化存儲, 即Pod從新調度後能訪問持久化數據,基於PCV實現,
2>穩定的網絡標識, 即Pod從新調度後PodName和HostName不變, 基於Headless Services(即沒有Cluster IP的Service) 來實現.
3>有序部署和有序擴展, 0-> N 下一個執行基於前一個已經Running或Ready, 基於InitC實現
4>有序刪除N->0
Horizontal Pod Autosacling