这期内容当中小编将会给大家带来有关怎么使用kubefed建立Kubernetes Federation,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
使用kubefed建立Kubernetes Federation
Kubernetes Federation(聯邦) 是實現跨地區與跨服務商多個 Kubernetes 叢集的管理機制。Kubernetes Federation 的架構非常類似純 Kubenretes 叢集,Federation 會擁有自己的 API Server 與 Controller Manager 來提供一個標準的 Kubernetes API,以及管理聯邦叢集,並利用 Etcd 來儲存所有狀態,不過差異在於 Kubenretes 只管理多個節點,而 Federation 是管理所有被註冊的 Kubernetes 叢集。
Federation 使管理多個叢集更為簡單,這主要是透過兩個模型來實現:
跨叢集的資源同步(Sync resources across clusters):提供在多個叢集中保持資源同步的功能,如確保一個 Deployment 可以存在於多個叢集中。
跨叢集的服務發現(Cross cluster discovery:):提供自動配置 DNS 服務以及在所有叢集後端上進行負載平衡功能,如提供全域 VIP 或 DNS record,並透過此存取多個叢集後端。
Federation 有以下幾個好處:
跨叢集的資源排程,能讓 Pod 分配至不同叢集的不同節點上執行,如果當前叢集超出負荷,能夠將額外附載分配到空閒叢集上。
叢集的高可靠,能夠做到 Pod 故障自動遷移。
可管理多個 Kubernetes 叢集。
跨叢集的服務發現。
雖然 Federation 能夠降低管理多叢集門檻,但是目前依據不建議放到生產環境。以下幾個原因:
成熟度問題,目前還處與 Alpha 階段,故很多功能都還處於實現性質,或者不太穩定。
提升網路頻寬與成本,由於 Federation 需要監控所有叢集以確保當前狀態符合預期,因是會增加額外效能開銷。
跨叢集隔離差,Federation 的子叢集git有可能因為 Bug 的引發而影響其他叢集運行狀況。
個人用起來不是很穩定,例如建立的 Deployment 刪除很常會 Timeout。
支援的物件資源有限,如不支援 StatefulSets。可參考 API resources。
Federation 主要包含三個元件:
federation-apiserver:主要提供跨叢集的 REST API 伺服器,類似 kube-apiserver。
federation-controller-manager:提供多個叢集之間的狀態同步,類似 kube-controller-manager。
kubefed:Federation CLI 工具,用來初始化 Federation 元件與加入子叢集。
節點資訊
本次安裝作業系統採用Ubuntu 16.04 Server
,測試環境為實體機器,共有三組叢集:
Federation 控制平面叢集(簡稱 F):
IP AddressHostvCPURAM172.22.132.31k8s-f-m1416G172.22.132.32k8s-f-n1416G叢集 A:
IP AddressHostvCPURAM172.22.132.41k8s-a-m1816G172.22.132.42k8s-a-n1816G叢集 B:
IP AddressHostvCPURAM172.22.132.51k8s-b-m1816G172.22.132.52k8s-b-n1816G事前準備
安裝與進行 Federation 之前,需要確保以下條件達成:
所有叢集的節點各自部署成一個 Kubernetes 叢集,請參考 用 kubeadm 部署 Kubernetes 叢集。
修改 F、A 與 B 叢集的 Kubernetes config,並將 A 與 B 複製到 F 節點,如修改成以下:
... … 名称:才能k8s-a-cluster 背景: 安康;上下文: ,,,集群:k8s-a-cluster ,,,用户:a-cluster-admin 名称:才能a-cluster-context 当前上下文:a-cluster-context :配置 偏好:{} 用户: 安康;名称:a-cluster-admin 用户:才能 …
這邊需要修改每個叢集配置。
引用><李>
<>之前,美元ls a-cluster.conf , b-cluster.conf f-cluster.conf 美元,KUBECONFIG=f-cluster.conf: a-cluster.conf: b-cluster.conf kubectl config view ——flatten 在~/.kube/配置 美元,kubectl config  get-contexts CURRENT ,, NAME ,,,,,,,,,,,,,,, CLUSTER ,,,,,,,, AUTHINFO ,,,,,,,,,名称空间 ,,,,,,,,,,,,a-cluster-context  k8s-a-cluster , a-cluster-admin ,,,,,,,,,,,,b-cluster-context  k8s-b-cluster , b-cluster-admin *,,,,,,,,,,,,f-cluster-context  k8s-f-cluster ,, f-cluster-admin接著在F叢集合併F,與B三個配置,透過以下方式進行:
李>怎么使用kubefed建立Kubernetes联盟