15

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

 4 years ago
source link: https://www.infoq.cn/article/a6K1arkX01bsMvzYGTht
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 介绍了一些最佳做法:

你可以使用不同的云提供商来创建控制平面实例。控制平面跨不同的公有云或服务提供商会带来运营方面的挑战,因此,建议将控制平面的所有组件放在同一个服务提供商那里,不过你也可以在不同的服务提供商那里创建不同的控制平面。

VfEjIrA.png!web

图片来源: 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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK