Kubernetes 多集羣管理:Kubefed(Federation v2) 最先發表在 blog.ihypo.net/15716465002…html
Kubefed(Federation v2)即 Kubernetes 聯邦,是目前社區正在難產的多集羣解決方案,目前的版本是 0.1.0,若是考慮到 Federation v1 的話,Kubefed 也算是有個出師未捷身先死的大兄弟了。git
Federation v1 在Kubernetes v1.6 時進入了 Beta 階段,但以後就沒有更進一步的發展,一直到 Kubernetes v1.11 左右正式被棄用。至於被廢棄的緣由是由於開發團隊認爲集羣聯邦的實踐比想象中還要困難,有許多問題是 v1 架構沒被考慮進去的,好比:github
從 Federation v1 架構上看,Federation 主要由 API Server、Controller Manager 和外部存儲 etcd 構成。web
Federation API Server 基本複用了 Kube Api Server,對外提供統一的資源管理入口,但只容許使用 Adapter 拓展支持的 Kubernetes 資源。bash
Controller Manager 協調不一樣集羣之間的狀態,經過與成員集羣的 Api Server 通信,來統籌管理全部的 Kubernetes 成員集羣。架構
Federation v1 總體的架構和 Kubernetes 自身的架構仍是很像的,並將成員集羣做爲一種資源進行管理。可是由於 v1 一開始並無設計到靈活的添加新 Kubernetes 資源以及 CRD,以致於每當建立一種新資源都要新增 Adapter。ide
原本資源設計的就很是不靈活,加之 RBAC 的支持問題,使得沒法作到多集羣資源的權限管理,於是流產,併爲 v2 積累了寶貴的教訓。post
Federation v2 利用 CRD 實現了總體功能,經過定義多種自定義資源(CR),從而省掉了 v1 的 API Server,但也所以引入了 Host Cluster 的概念。ui
kubefedctl join
使得成員集羣加入到主集羣(Host Cluster)雖然 Federation v2 在設計上作了很是大的變動並省掉了 API Server ,但整體架構變更並不大,當將 Federation Control Plan 部署完成以後能夠看到由兩個組件構成:spa
$ kubectl -n kube-federation-system get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
kubefed-admission-webhook 1/1 1 1 3s
kubefed-controller-manager 2/2 2 2 3s
複製代碼
admission-webhook 提供了准入控制,controller-manager 處理自定義資源以及協調不一樣集羣間的狀態。
在邏輯上,Federation v2 分爲兩個大部分:configuration 和 propagation。
configuration 的設計明顯吸收了 v1 的教訓,將不少會變化的內容配置化,configuration 主要包含兩個配置:
對於 Type configuration,聯邦 v2 是下足了功夫,包含三個關鍵部分:
以上基本上完成了資源的定義併爲 propagation 提供了資源描述。除此以外,Federation v2 還支持定義部署策略和調度規則,實現更精細的管理。
Kubefed 使用參考:《使用 Kubernetes 聯邦(Kubefed)進行多集羣管理》