Categories
程式開發

oneinfra簡介:多Kubernetes集群管理平台


oneinfra是一個開源項目,用於跨不同公有云、私有云和裸金屬服務器管理和運行多個Kubernetes集群。

oneinfra安裝的主要部分包括“Hypervisor”、集群抽象和組件。 Hypervisor機器上必須運行著容器運行時接口(CRI)實現。集群抽象表示一個Kubernetes集群,包括控制平面及其Ingress。還有其他組件(屬於控制平面和控制平面Ingress)運行在集群上。控制平面組件包括典型的Kubernetes主節點組件:etcd、API服務器、調度器等,而Ingress組件則包括haproxy和VPN端點。 oneinfra可以以聲明的方式用不同的版本創建不同的集群,並且允許我們同時使用不同的Kubernetes版本。它類似於開源的GKE或EKS。

為了了解更多關於這個項目的信息,InfoQ聯繫了oneinfra的作者、軟件架構師Rafael Fernandez Lopez

按照López的說法,oneinfra主要是填補這樣一項空白,即“提供一個非常簡單的設置系統,讓你可以根據需要創建和銷毀孤立的Kubernetes控制平面,而不需要為它們創建專門的基礎設施”。 oneinfra可以使用來自多個提供商的底層基礎設施和機器(包括裸金屬實例)來創建控制平面實例。關於這一點,López介紹了一些最佳做法:

你可以使用不同的雲提供商來創建控制平面實例。控制平面跨不同的公有云或服務提供商會帶來運營方面的挑戰,因此,建議將控制平面的所有組件放在同一個服務提供商那裡,不過你也可以在不同的服務提供商那裡創建不同的控制平面。

oneinfra簡介:多Kubernetes集群管理平台 1

圖片來源:https://github.com/oneinfra/oneinfra(授權使用)

在oneinfra的術語中,Hypervisor是“物理機或虛擬機,oneinfra將在上面創建控制平面組件”。 oneinfra中的Hypervisor節點必須運行著容器運行時接口(CRI)實現。 Hypervisor可以是“public”的,並運行Ingress 組件,也可以是“private”的,並運行控制平面組件。 Hypervisor節點需要有一個CRI實現的服務包裝器來連接oneinfra。 López解釋說,在未來的版本中,這個過程會變得更簡單:

簡化新建Hypervisor的過程是其路線圖的一部分——將來會添加類似“oi hypervisor join”這樣的命令,類似於當前的“oi node join”命令。後者與託管集群通信以加入集群,而前者與管理集群通信並作為Hypervisor加入集群。

該系統有一個“協調器”模塊——這是一組可以做很多事情的控制器。它調度Hypervisor上的控制平面組件,並創建已定義但缺少的組件。它還負責刪除被用戶刪除的控制平面組件,使系統達到期望的狀態。協調器處理工作節點向託管集群發出的加入請求,並確保RBAC規則設置正確。

在當前的架構中,控制平面實例是相互隔離的,因此,Kubernetes的主節點軟件(如etcd)不能共享或者被另一個持久層代替。 Lopez說,還需要解決性能方面的問題,比如,確定在一個Hypervisor中可以容納多少個控制平面的基準測試。未來的另一項改進工作是使工作節點可以位於異構網絡上。

GitHub上提供了oneinfra的源代碼。

原文鏈接:

oneinfra : Platform to Manage Multiple Kubernetes Clusters as a Service