今天來介紹Kubernetes的架構跟元件。
一個Kubernetes叢集分為主節點(Master)跟工作節點(Node)兩種角色。主節點負責控制叢集的運行,分派任務給工作節點;工作節點負責接收任務並與主節點保持溝通。
在Matser上有幾個元件:
提供Restful API作為介面,對Kubernetes叢集內部資源做控制。例如資源的增減、狀態取得等等;從上面的架構圖也可以發現所有的元件都跟他有關聯,所有對叢集資源的控制都需要透過kube-apiserver。
負責叢集內部資源物件的自動化控制,透過監聽kube-apiserver的方式取得資源物件的狀態,再透過kube-apiserver做控制。
負責資源的調度,決定該調度到哪一個節點上運行。在沒有特別指定的情況下會優先分配給現有資源最多的節點,如果有特別定義才會依照定義去分配。
存儲叢集狀態的資料庫,當發生故障時可以從這裡做還原,因此會透過kube-apiserver寫入資料。例如當Kube-apiserver建立一個新的Pod時,就會在etcd中寫入這個Pod的資料。
在工作節點上的元件有以下幾個:
與kube-apiserver溝通,維持容器的生命週期管理,定期和apiserver溝通讓其掌握容器以及節點狀態。
負責監聽apiserver上的服務(service),處理經由服務轉發到節點上的流量,實現如叢集內部IP連線(Cluster IP)、NodePort對應等功能。
容器的運行引擎,kubernetes提供多種多種容器引擎支援,例如常用的docker。
接下來會帶來Kubernetes的安裝。