pod的管理與控制
對k8s來說,pod是k8s最小的元件,但是當我們在使用時,通常不會直接對pod進行部屬或操作,而是會透過控制器(controller)來對pod進行操作。
雖說叫做控制器,不過並不是有個元件叫做控制器,而是多種類型的物件,下面是主要常見的控制器:
- Deployment:
告訴k8s如何去建立pod的實體,透過ReplicaSets來控制pod更新,rolling-update等行為。
由於只要在Deployment設定好,k8s就會自動完成,
因此官方也建議使用Deployment加ReplicaSets來處理部署pod的部署和管理。
- ReplicaSets:
算是替代了ReplicationController的工作
(官網建議現在以 ReplicaSet 和 Deployment來建立副本管理機制 )
能夠確保pod的數量以及版本,透過deployment和ReplicaSets,
可以達成rolling-update和roll-back等操作,詳細會在之後章節說明。
- DaemonSet
用來確保節點(node)上會運行指定pod,當有節點加入叢集(cluster)時,就會在節點上生成一個pod。
而當節點從叢集被移除時,pod也會被回收。通常會用於監控用或是log收集用。
- StatefulSets:
當pod有需要穩定,唯一,持久化的需求時,就需要透過statefulSets來部屬。
例如你希望能夠建立一個持久化的redis,不要因為重啟pod將redis內的資料刪除,
就可以考慮用StatefulSets部屬.
- ReplicationController:
(官方建議用Deployment和ReplicaSet 來取代他)
基本功能和ReplicaSets差不多,都是確保pod的數量,太多砍掉,太少增加。
唯一和ReplicaSets的差別是ReplicationController只支援equality-based label selector。
在這章我們知道了用來控制pod的控制器有哪些,那麼對於架構的解說大概在這告一段落,下一章我們會開始介紹如何安裝k8s以及各式各樣的本機k8s。