广告

使用Cluster API提供裸金属Kubernetes

  • 浏览(279)
  • 评论(0)
  • 译者:k8s

随着应用程序现代化的如火如荼,各大企业都在构建云原生应用程序,并使用Kubernetes(K8s)对其进行编排。随着越来越多的应用程序在容器中运行(越来越多的应用程序参与生产),IT和开发团队正在寻找进一步的优化方法以提高效率。

其中之一是直接在裸金属服务器上运行应用程序和Kubernetes(K8s)平台。好处是什么?更好的性能,更少的成本(告别虚拟机监控程序许可)和工作量(少管理一层)。事实上,K8s具备了在裸金属上直接运行应用程序所需的一切。

缺点是什么?到目前为止,安装、运行和管理裸金属K8s集群是相当具有挑战性的,通常被视为基础服务器和K8s节点之间的“断开连接”体验,更不用说将它们视为多环境K8s管理策略的另一个“位置”。但是,如果有一种方法可以统一体验并像对待其他集群一样对待裸金属服务器呢?

在本文中,我们将了解两种开源技术(和一个项目)如何在几分钟内提供部署和管理裸金属K8s集群所需的一切!

真正的挑战是操作系统

目前运行和管理裸金属K8s集群面临的挑战是,服务器和操作系统与K8s节点的生命周期分开管理。

通常,机器预先配置了操作系统(OS),然后才将K8s组件初始化到正在运行的系统中(使用kubeadm、kops或其他K8s编排工具)。如果物理服务器及其操作系统不属于K8s管理的一部分,会严重妨碍生命周期操作:不支持自动恢复和扩展,并且可能会降低集群和应用程序的可用性,因为使用过时的“内联”过程进行升级。

对于较小的部署和边缘用例,这可能足够好。但是,当涉及到必须在数据中心或与provider一起运行和管理许多裸机时(例如,对于AI/ML大规模处理),服务器和操作系统需要的“独特”服务将成为一个令人头痛的问题、风险以及最终的成本。

如今,大多数组织都在虚拟机监控程序上运行K8s,以简化管理节点和K8s的体验。好处是显而易见的:在节点和配置方面实现了一致性,同时还实现了基本操作,如集群扩展、允许滚动升级,甚至可以通过将故障节点替换为健康节点来自动修复故障节点。

如果我们能够在裸金属K8s集群上运行这些完全相同的功能,并获得在裸金属上运行应用程序的效率,会怎么样?即提高了性能,降低了管理程序增加的成本和操作复杂性。

解决方案:桥接Cluster API和 Canonical MaaS

在开始之前,让我们先看看配料:

声明式生命周期管理最流行的K8s子项目之一是Cluster API。Cluster API是一个项目,它为集群生命周期管理带来了K8s风格的API和“最终状态”方法。它旨在跨各种数据中心和云环境工作。集群API的采用在过去几年中飞速发展,主要的现代容器和K8s管理平台都支持它。Cluster API的声明性方法使得一致地管理许多不同的集群和根据需要进行扩展变得非常容易。当然,尽管Cluster API是一个声明式管理K8s环境的伟大工具,但它并不能解决我们的问题,因为到目前为止,还没有办法将其用于裸金属服务器。

这就是Canonical MaaS的用武之地。对于裸金属服务器生命周期管理,虽然有几种不同的接口和平台(Metal3、Tinkerbell、Ironic等),但最流行和最成熟的(开发了近十年)可能是Canonical MaaS,它允许裸金属服务通过类似IaaS云的丰富API集进行管理;从分配机器、配置网络、部署操作系统等各个方面,MaaS的吸引力在于它通过IPMI或Redfish接口为Cisco、Dell、HP和大多数其他供应商的不同类型的硬件供应商提供了广泛的支持。

为了支持跨各种环境(云、数据中心、边缘位置)的资源调配,Cluster API提供了一个抽象层,其中每个环境的实现都在一个单独的“provider”组件中。这个“provider”组件是Cluster API抽象(集群、机器等)和底层环境之间的桥梁。例如,当给定Cluster/AWSCluster资源时,带有“AWS”提供程序组件的Cluster API将管理AWS上的基础设施(管理VPC、子网、EC2实例、负载均平衡器等的生命周期)。

使用Cluster API提供裸金属Kubernetes

换句话说,为了使用Canonical MaaS作为接口来表示要使用Cluster API管理的裸金属服务器,需要开发一个provider。这是一个不能忽视的领域,Spectro Cloud已经发布第一个Cluster API MaaS provider(“cloud-api-provider-maas”),使裸金属K8s对任何人都很方便。

使用Cluster API提供裸金属Kubernetes

此provider使用Canonical MaaS来提供、分配和部署计算机,配置计算机网络,并管理所有控制平面节点的DNS映射。一旦用户为Cluster/MaasCluster创建了相应的Cluster API CRD,Cluster API MaaS provider将以编程方式分配和部署向Canonical MaaS注册的裸金属。MaaS将通电,PXE引导安装指定的操作系统。

机器通电后,Cluster API将初始化K8s控制平面节点,然后将工作节点机器加入K8s集群。所有Cluster API功能都在provider中实现,例如提供符合多主机K8s的集群、实施安全最佳实践、支持滚动升级等。

本质上,这意味着裸金属基础设施的生命周期可以与Kubernetes环境的整个生命周期管理联系起来。

新的Cluster API MaaS provider使企业能够轻松地直接在裸金属服务器上部署、运行和管理K8s集群,从而提高性能并将成本和运维工作量降至最低。同时,Cluster API为Kubernetes集群生命周期管理带来了一种现代的、声明式的方法,消除了繁重的脚本编写需求,并使统一调配和管理K8s节点(现在包括裸金属服务器)的体验变得更加容易。

原文链接:

https://thenewstack.io/provision-bare-metal-kubernetes-with-the-cluster-api/

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头