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

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

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