56

什么是云编排?

 6 years ago
source link: https://www.sdnlab.com/20864.html
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.
neoserver,ios ssh client

编排能不能被视为交付和配置管理方案的替代品是值得商榷的,在云原生应用程序的前提下尤为明显。我们可以从各个角度来看这个问题:与数据中心解决方案进行比较,区分基础设施(云端和云外)与容器(主要关注云)的编排,以及在不同场景下的最佳实践。

Orchestration-668x400.jpg

基础设施或容器?

在讨论编排时,第一个不可避免地问题就是:基础设施编排或容器编排?

这是我们面对的两难选择,取决于我们希望实现的抽象程度以及如果组织堆栈。如果我们决定在基础设施层进行管理,我们将使用虚拟机和裸机服务器。换言之,即多租户或单租户服务器。假设我们以IaaS的方式使用云,那么我们就会得到一些资源,例如网络资源、存储、负载平衡器、数据库、DNS等等,我们可以根据自己的喜好建设基础设施。

如果我们已经决定在CaaS(有时被视为PaaS)层进行管理,将对容器的生命周期进行管理,或者对工作负载进行管理。对于那些不熟悉容器的人来说,这不是一种查看工作负载的新方式,最受欢迎的是Docker,Rkt和LXC。容器非常适合定义一个不可变的体系架构,也可以用于微服务定义,更不用说它们是轻量级的,易于移植的,并且可以打包使用。

这两者都各有优缺点,下面继续讨论两者的编排方面。

基础设施

编排基础设施的方法有好几种,下面介绍的是最受公司欢迎的两种。

交付和配置管理:一种方式是使用旧式的PXe/Kickstart组合文件,尽管它正慢慢被自动化解决方案取代,但有些公司仍然坚持使用它,或者像Cobbler这样的替代品。另一方面,我们使用诸如Foreman等工具。Foreman支持跨不同操作系统的BIOS和UEFI,并且与Puppet和Chef等配置管理工具集成。Foreman在数据中心交付方面表现出色,并为我们提供了易于管理的基础设施,可随时使用或配置管理。

一旦完成交付,我们就会进入配置管理,其中包括生命周期的管理。包含Ansible、Chef、Puppet、Salt,甚至是老式可靠的CFengine。后两个是我的最爱,同时Ansible也给了我很多帮助,因为简单无主的工作方式。

编排和可选的配置管理:现在,编排意味着概念上的不同,现在常用的工具是Terraform。它允许在数据中心或云端进行编排,与AWS,Oracle Cloud,Azure甚至AliCloud等不同的云进行集成。除了云提供商之外,还可以将Terraform与第三方(如PagerDuty)集成并处理所有类型的资源。从经验来看,这种整合是顺利且简单的,但有时还不够成熟。

并非所有提供商都能提供高度的灵活性。最初在Oracle Cloud中使用Terraform时,OCI的自动缩放还不够成熟。因此,该提供商不允许Terraform创建自动缩放组,但是有时候这些工作非常重要,以至于曾需要同时使用Terraform和AWS工作。另一个是看提供商的功能,不管是云还是其他。不容忽视的是,有时我们的工具不能很好地融合在一起设计出合适的架构。

Terraform的另外一个优点是它可以编排任何基础设施,包括虚拟机、裸机以及网络资源和存储资源。同样,它将取决于云和Terraform提供商以及所使用的插件。

Terraform新一代工具的作用不仅在于编排,还在于作为代码(IaaC)方面的基础设施。这个行业到处都是IaaC,Terraform也不例外。我们被允许将资源定义存储在任何VCS系统,Git,SVN或任何其他文件中,而且这非常庞大:它允许我们拥有版本化的基础设施,团队可以进行交互,并且每个人都可以加速且管理分支机构并定义不同的版本,分离基础设施和环境的版本,如生产、分期、UAT等等。

一旦完成了Terraform的初始步骤,配置就可以用诸如Cloud-Init之类的任意引导完成。另一种比较流行的选择是Ansible:它适用于小型简单初始任务。如果开始从事云计算,Cloud-Init比较符合需求。之后可以使用其他配置管理工具接管。

容器编排

容器不再是新事物,他们已经存在了几年(或几十年,取决于我们如何看待它),它们足够稳定和有用,我们可以选择它们作为平台。

虽然数据中心的容器很有趣,但云端的容器更好,尤其是由于现在大多数云提供给我们容器编排,以及大量的解决方案,以防我们无法获得足够的容量。例如ECS, Amazon Container Service,ACS, Azure Container Services; CoreOS Fleet; Docker Swarm,GCE, Google Container Engine,Kubernetes等。

Kubernetes将来会有很好的发展,主要有以下三个原因:

  • 它是由谷歌设计的,使用环境巨大,并且能够蓬勃发展;
  • 它是云原生计算基金会(CNCF)的一个选择,这意味着它有更大的机会来生存。CNCF对云原生应用程序非常重要,受到许多公司(如Oracle)的支持;
  • 该架构简单易学,可以快速部署,并且容易扩展。

Kubernetes是一个非常有前途的工具,并且已经取得了成果。如果您正在考虑大规模的容器编排,开始深入研究诸如Minikube之类的技术,并慢慢推进诸如Rancher等易于使用的工具,这将大大有助于为未来铺平道路。

结论

正如已经表明的那样,有许多解决方案取决于正在管理的基础设施类型,还包括基础设施的位置、规模以及目前如何分配。

技术可以共同使用。在Oracle云安装了OKE(Oracle Kubernetes Engine)之前,在云端实现Kubernetes的方式是通过一个实例化必要基础设施的Terraform插件,然后在其之上部署Kubernetes集群,以便我们继续配置、管理和安装应用程序(例如ElasticSearch)。

现在行业正在迈向云计算,这意味着所有将作为XaaS(一切即服务)提供。这反过来意味着构建分布式架构,可靠、高性能、可扩展且成本更低,而且对于一些公司来说,这是一个巨大的竞争优势。

尽管如此,还是有很多技术可供选择。通常,选择符合行业标准的技术是一个明智的决定。这意味着它已被公司用于当前的开发,并将在未来数年内得到维护。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK