广告

想要一致的跨云Kubernetes体验吗?试试 Cluster API

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

2019年底,笔者曾写了一篇文章讨论独立软件供应商(ISV)如何越来越多地帮助客户采用容器和Kubernetes等云原生技术。几年后,ISV及其客户显然已经真正采用了容器化应用模式和多云战略,而且步伐仍在加快。

最近,CNCF的一篇文章显示,2021年,96%的组织在使用或评估Kubernetes,而DataArt的报告《2022年塑造云计算的7个趋势》将多云确定为头号趋势。

为什么采用率不断上升?原因有很多:企业正在采用多云技术,以利用不同的定价模式和地理定位,避免供应商锁定,并在服务中断时实现冗余。

需要明确的是,多云方法带来了一些额外的复杂性,因为每个云提供商都有自己的安全模型、管理接口、网络基础设施,甚至资源配置(称为“形状”)。因此,每个提供商需要不同的基础设施知识和技能。例如,AWS有三种不同的负载均衡器服务,微软Azure有四个,Oracle Cloud Infrastructure(OCI)有两个。

当考虑ISV和客户可以使用的所有云服务时,选择可能会非常多。事实上,对于一个使用单一云提供商的组织来说,知道何时使用哪种特定的云服务,以及如何最好地配置其中的每一种服务,已经足够具有挑战性了。在多云的组合和排列中这会让人望而生畏。

容器能帮忙吗?

容器呢?由事实标准的Kubernetes编排平台编排的容器不应该帮助ISV和组织跨多个云部署和管理软件和服务吗?

是的,因为Kubernetes帮助在标准化容器中部署应用程序,甚至跨多个云。这部分很简单。

但是,因为Kubernetes开箱即用,不帮助组织管理容器集群和云基础设施。那部分很难。

Kubernetes是一个复杂的系统,它依赖于许多组件被正确配置以拥有一个稳定的集群。管理Kubernetes集群生命周期(创建、更新、删除)的提供商基础设施之间的巨大差异增加了更大的复杂性。

所有主要的云服务提供商都提供托管Kubernetes服务(如AWS Elastic Kubernetes Service、Microsoft Azure Kubernetes Service和Oracle Kubernetes Engine),该服务抽象了Kubernetes和相关基础设施的许多复杂性。这使得管理集群生命周期变得更容易。然而,当跨多个云运行多个集群时,不同需求和不同用户体验的相同问题仍然存在。

Kubernetes Cluster API

这就是Kubernetes Cluster API(CAPI)的用武之地。CAPI是一个Kubernetes子项目,专注于提供API和工具,以简化在多个云上(甚至在内部)配置、升级和运维多个Kubernetes集群的过程。

CAPI通过定义一组通用的操作,为各处的Kubernetes集群提供一致的体验和生命周期控制。更重要的是,CAPI为每个主要的云提供商提供了一个默认的实现——这个默认的实现通常可以用最少的努力来部署。(对于有非常具体需求的组织,可以定制甚至完全替换默认实现。)

有趣的是,CAPI使用Kubernetes本身来管理Kubernetes。CAPI使用一个管理集群来创建和管理工作负载集群。

图片

使用CAPI的要求很简单。从Kubernetes集群开始——它可以是使用Kind或Rancher Desktop的本地集群,也可以是现有的托管服务。然后,管理员为每个特定的云提供商安装并初始化CAPI。

然后,CAPI的Kubernetes管理集群生成工作负载集群,这些集群将在所需的云服务上运行部署给它们的应用程序。例如,对于Oracle的云,CAPI将生成虚拟云网络(VCN)、子网、安全列表、互联网网关和服务网关。

再深入一点,CAPI使用定制资源定义(custom resource definitions,CRD)来优化Kubernetes安装,并为每个云提供商定义计算环境。四个最重要的CRD是Machine、MachineSet、MachineDeployment和MachineHealthCheck:

Machine:

Machine是承载Kubernetes节点的计算实例的声明性规范。该规范允许管理员为目标工作负载选择适当的特定于提供商的计算形状和功能。例如,OCI上的轻量级工作负载可以使用基于Arm的小实例,而较大的工作负载可以使用多达128个OCPU的裸金属实例。这些是特定于提供者的定义,不能在提供者之间移植。

MachineSet:

MachineSet保持Kubernetes集群的稳定运行。MachineSet的工作原理与核心Kubernetes RepliaSet类似。

MachineDeployment:

MachineDeployment为Machine和MachineSet提供声明性更新。MachineDeployment的工作原理类似于核心Kubernetes部署,它通过向新旧两个MachineSet推出更改来协调对一个Machine的更改。

MachineHealthCheck:

MachineHealthCheck定义了Kubernetes节点不健康的条件。通过删除相应的Machine来删除不健康的节点,而MachineSet确保将创建一台新机器来替换它。

当然,CAPI还有其他方面可以帮助管理多个Kubernetes集群,但Machine的概念是实现这一点的核心。通过Kubernetes风格的API,以类似于Kubernetes部署和RelicaSet的方式抽象底层基础设施和管理Machine,无论在何处运行集群,都能提供直观、一致的体验。

CAPI是Kubernetes Special Interest Group(SIG)的一个项目。目前,有面向20多个云服务的CAPI提供商。

管理Kubernetes的飞跃

随着Kubernetes的使用增加,越来越多的组织选择了多云供应商策略,对Kubernetes的一致管理方式的需求变得更加重要。Cluster API是实现这一点的巨大飞跃。

原文链接:

https://thenewstack.io/want-consistent-kubernetes-experience-across-clouds-try-cluster-api/


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