天天看點

Kuberbetes controller manager 控制器的協同原理

控制器的協同原理

Kuberbetes controller manager 控制器的協同原理

最對K8s這種分布式的系統,它是微服務管理系統,就是我有一個業務流,但是這個業務流是由不同的元件配合完成的,高内聚,松耦合。

就是将同一個職責放在一個元件裡面去,把不同的職責放在不同的元件,k8s遵循了這樣一個原則,将不同的職責放到不同的對象裡面而已。

deployment對象描述的是一次部署行為,行為裡面描述了需要什麼樣的pod,然後副本數是多少,這個副本級本身就會由replicaset來代表,replicaset語義就是無狀态的副本集,replicaset裡面也是有這個資訊,比如pod的模闆是什麼,replicas數是多少,然後就需要去建立副本了,是以就是一個一個的pod,是以從api的定義來說,針對無狀态應用最上面是deployment,因為定義的是部署的政策,是以它裡面有額外的updatestrategy,replicastet定義的是副本集,pod是真正的應用執行個體,這三者配合完成整個無狀态應用部署的目的。

那麼kubermets就是由不同的控制器協同工作來完成統一的目的。

Kuberbetes controller manager 控制器的協同原理

針對deployment來說,它預設屬性是哪些呢?就是有一個rolling update strategy,還有一個reversion history,是以deployment就是用來定義一次部署政策和描述部署行為。

在更新時候的政策是滾動更新,它裡面有兩個重要的屬性,一個是maxsurge,一個是maxunaviliable。

maxsurge是pod更新的時候,先啟動25%,假設原來100個pod,先啟動25%就是先啟動25個pod,maxunaviliable是說如果有25%的pod不ready,那我這次部署就需要停下來。

滾動更新政策就是我有100個副本的時候,那麼我會去批次更新,同時控制好頻度。

reversion history limit記錄的就是說我要存多少版本,這樣友善我復原。

deployment建立好之後,controler manager裡面就有deployment controler,它會watch deployment,除了之前的更新政策,還會看replicas多少個副本,template模闆是什麼。

副本加模闆組合其實就是副本集,是以control職責就是監聽deployment的對象,并且建立replicaset。

replicaste建立出來之後,control manager裡面replicaset controller就監聽了這個建立事件,他就會根據replicaset裡面定義的模闆和副本數去建立pod。

pod建立完之後就會使用排程器去排程pod,因為pod本身,在建立的時候還沒有還沒有被排程。

繼續閱讀