Kubernetes 多集羣管理:Kubefed(Federation v2)

Kubernetes 多集羣管理:Kubefed(Federation v2) 最先發表在 blog.ihypo.net/15716465002…html

Kubefed(Federation v2)即 Kubernetes 聯邦,是目前社區正在難產的多集羣解決方案,目前的版本是 0.1.0,若是考慮到 Federation v1 的話,Kubefed 也算是有個出師未捷身先死的大兄弟了。git

Federation v1 爲何被棄用

Federation v1 在Kubernetes v1.6 時進入了 Beta 階段,但以後就沒有更進一步的發展,一直到 Kubernetes v1.11 左右正式被棄用。至於被廢棄的緣由是由於開發團隊認爲集羣聯邦的實踐比想象中還要困難,有許多問題是 v1 架構沒被考慮進去的,好比:github

  • 控制平面組件會由於發生問題,而影響總體集羣效率。
  • 沒法兼容新的 Kubernetes API 資源。
  • 沒法有效的在多個集羣管理權限,如不支持 RBAC。
  • 聯邦層級的設定與策略依賴 API 資源的 Annotations 內容,這使得彈性不佳。

從 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 設計

Federation v2 利用 CRD 實現了總體功能,經過定義多種自定義資源(CR),從而省掉了 v1 的 API Server,但也所以引入了 Host Cluster 的概念。ui

基本概念

  • Federate:聯邦(Federate)是指聯結一組 Kubernetes 集羣,併爲其提供公共的跨集羣部署和訪問接口
  • KubeFed:Kubernetes Cluster Federation,爲用戶提供跨集羣的資源分發、服務發現和高可用
  • Host Cluster:部署 Kubefed API 並容許 Kubefed Control Plane
  • Cluster Registration:經過 kubefedctl join 使得成員集羣加入到主集羣(Host Cluster)
  • Member Cluster:經過 KubeFed API 註冊爲成員並受 KubeFed 管理的集羣,主集羣(Host Cluster)也能夠做爲成員集羣(Member Cluster)
  • ServiceDNSRecord: 記錄 Kubernetes Service 信息,並經過 DNS 使其能夠跨集羣訪問
  • IngressDNSRecord:記錄 Kubernetes Ingress 信息,並經過 DNS 使其能夠跨集羣訪問
  • DNSEndpoint:一個記錄(ServiceDNSRecord/IngressDNSRecord 的) Endpoint 信息的自定義資源

架構

雖然 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:用來描述將被聯邦託管的資源類型
  • Cluster configuration:用來保存被聯邦託管的集羣的 API 認證信息

對於 Type configuration,聯邦 v2 是下足了功夫,包含三個關鍵部分:

  • Templates 用於描述被聯邦的資源
  • Placement 用來描述將被部署的集羣
  • Overrides 容許對部分集羣的部分資源進行覆寫

以上基本上完成了資源的定義併爲 propagation 提供了資源描述。除此以外,Federation v2 還支持定義部署策略和調度規則,實現更精細的管理。

上手

Kubefed 使用參考:《使用 Kubernetes 聯邦(Kubefed)進行多集羣管理

參考

相關文章
相關標籤/搜索