什么是云编排?

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

基础设施或容器?

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

这是我们面对的两难选择,取决于我们希望实现的抽象程度以及如果组织堆栈。如果我们决定在基础设施层进行管理,我们将使用虚拟机和裸机服务器。换言之,即多租户或单租户服务器。假设我们以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(一切即服务)提供。这反过来意味着构建分布式架构,可靠、高性能、可扩展且成本更低,而且对于一些公司来说,这是一个巨大的竞争优势。

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

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2018-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Pulsar-V

C#下各种获取时间的姿势

直接贴代码吧 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21...

3196
来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

2986
来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2732
来自专栏跟着阿笨一起玩NET

[C#]工具类—FTP上传下载

  不错的文章:http://www.cnblogs.com/greatverve/archive/2012/03/03/csharp-ftp.html

1131
来自专栏阿炬.NET

c# datetime 格式化

2836
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5425
来自专栏谈补锅

记录C#常用的代码片段

using Newtonsoft.Json; using Newtonsoft.Json.Linq;

892
来自专栏菩提树下的杨过

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上 using System; using System.Web; using S...

1975
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23010
来自专栏跟着阿笨一起玩NET

C#巧用Excel模版变成把Table打印出来

转载:http://blog.csdn.net/gwblue/article/details/38865525

1152

扫码关注云+社区