云原生应用程序的标志之一是它具有高度的错误恢复能力,同时提供多种可扩展性选项。这是唯一可能的,因为云环境使开发人员能够部署和管理整个容器集群。对于只有几个容器的小型应用程序,管理不是什么大问题——但随着应用程序的扩展,它们的编排和调度变得越来越重要。
虽然我们在关于DevOps景观的综合指南中已经触及了这个主题,但本文将详细阐述调度和编排的工作原理。有多种工具可以帮助您编排应用程序服务器,消除部署大量容器带来的大部分复杂性。但在我们开始之前,让我们先解释一下容器在DevOps世界中扮演的重要角色。
作为包括微服务和DevOps在内的现代软件开发的关键组成部分,如果不深入研究容器的概念,就无法理解应用程序的调度和编排。根据标准的Docker定义:“容器是一个标准的软件单元,它将代码及其所有依赖项打包在一起,因此应用程序可以快速可靠地从一个计算环境运行到另一个计算环境。”
简而言之,容器是一个小型的独立软件包,包含运行应用程序所需的一切;代码和所有其他依赖项(例如系统工具、库和运行时等等)。它的核心优势是体积小,允许您将大量容器打包到一台计算机上,所有容器都在共享操作系统内核上运行。
在容器出现之前,同样的工作是由虚拟机完成的,它不仅将应用程序代码及其依赖项打包在一起,而且还运行一个隔离的操作系统。这意味着许多操作系统内核将在一台服务器上运行,彼此不知情。除此之外,整个过程有时由主机操作系统管理。
由于这些虚拟机在模拟服务器上运行,因此存在与该过程相关的各种困难。与容器相比,虚拟机通常是影响整体系统性能的开销,导致企业每美元的性能较低。使用容器,您只需打包应用程序代码、相关库及其依赖项。此外,唯一的操作系统是主机的操作系统,这意味着容器可以直接与操作系统通信,而不会产生不必要的开销。
容器的最大好处之一是它们为开发人员简化了软件部署。通过将基本要素与代码打包在一起,开发人员可以更轻松地知道他们的应用程序软件将执行,而不管它部署在何处。
容器也是被称为“微服务”的新应用程序开发趋势的核心部分。容器不是独立的整体应用程序,而是允许您将应用程序分解为松散耦合的微服务,这些微服务通过不可知的API接口相互通信。微服务架构可以带来大量好处,我们的微服务软件架构风格概述中对此进行了介绍。但是由于它们的体积小,一个全尺寸的应用程序需要大量的容器来运行——因此,有许多需要管理的移动部件。这就是应用程序调度和编排的用武之地。
应用程序编排,通常称为容器编排,是一种非常流行的技术,被世界各地的开发团队用来管理数量极其庞大的容器。Devopedia将容器编排定义为:“……一个自动化基于容器的应用程序的部署、管理、扩展、网络和可用性的过程。”容器管理涉及大量任务,例如供应、管理、扩展和网络等等。对于具有五个容器的应用程序,开发团队可能能够有效地管理这些任务;但是大型应用程序从数千个容器中获取数据。通过编排,开发人员可以自动化简化整个流程的各种工作。
值得注意的一点是,调度通常被视为整个容器管理范围的一部分,而一些专家将其视为一个单独的容器原则。根据微软的说法,“调度意味着管理员能够在集群中启动容器,因此它们也提供了一个UI。”容器调度程序有很多职责,从最有效地利用资源到确保跨不同节点或主机的有效负载平衡。由于它们靠近集群,它们通常被同等对待。事实上,流行的容器编排工具也提供了调度能力。
有效编排容器的第一步是确定正确的工具。著名的名字包括DockerSwarm和Kubernetes,但我们稍后会谈到它们。
首先我们来分析一下应用编排和调度过程是如何工作的:
通常,开发团队会在将相同的应用程序部署到生产环境之前,尝试通过在各种测试环境中部署相同的应用程序来控制配置文件。借助容器编排工具,开发人员可以自由选择部署位置。这些工具可以在各种环境中运行,从本地服务器和本地机器到公共云基础设施提供商。
最流行的应用程序调度和编排工具
市场上有很多应用程序调度和编排工具,各有优缺点。以下是主导软件开发市场的前三名的概述:
Kubernetes已成为软件开发行业的基准编排工具之一。它的起源可以追溯到谷歌,最初是搜索引擎巨头“Borg项目”的迭代。此外,它还是著名的CloudNativeComputingFoundation的核心,该基金会得到Google、AmazonWebServices、Microsoft、IBM、Intel、Redhat和Cisco等计算巨头的支持。
Kubernetes的标志仍然是它允许开发人员交付PaaS(平台即服务)的能力,这有助于创建硬件抽象层,而它能够跨领先的云平台和本地服务器运行是另一个加分项。这允许团队轻松地跨不同平台移动工作负载,而无需投资于应用程序重新设计。
Kubernetes的主要组件包括:

它是另一种流行的编排工具,提供与Docker的完全集成。它不如Kubernetes复杂,是刚开始使用容器编排的开发人员的绝佳选择。简而言之,DockerSwarm由于与平台的固有集成,使工程师能够更轻松、更快速地进行容器部署。尽管如此,Dockers提供了两者——它自己的编排工具“Swarm”和Kubernetes——希望让它们成为免费的。
Mesos由加州大学(伯克利分校)制造,比Kubernetes存在的时间更长。它以为开发人员提供高级可扩展性的轻量级应用程序而闻名。一个典型的Mesos可以运行超过10,000个节点——这还不包括它允许独立发展的框架。此外,它还支持多种流行的编程语言,例如Java、C++和Python。需要注意的是,Mesos仅提供集群管理解决方案。因此,开发人员必须构建整个框架以启用容器的编排——一个流行的例子包括Marathon。
最终,编排工具承担了许多以前会让开发人员忙得不可开交的流程;有了这些,资源就可以专用于更重要的任务。
以下是应用程序编排工具的一些好处:
现代工具允许在不影响应用程序其余部分的情况下扩展特定的应用程序组件。
面对增加的流量?编排工具可以帮助您快速创建新的容器化应用程序。
通过自动执行多项核心任务,您可以减少人为错误的可能性。有了这样一个简化的安装过程,您的软件开发团队的工作效率就会提高。
通过应用程序的容器化,这些工具允许您共享资源而不会危及数据的安全性。
软件开发行业已迅速转向采用容器模型,因为它允许他们简化整个部署过程。但软件容器的成功在很大程度上得益于允许用户自动化容器管理的高级编排工具的出现。在Kubernetes继续主导行业的同时,还有许多其他工具也具有不同的优势。最终,适合您的选择取决于您的要求以及最能满足这些要求的工具。
本文来源:国外服务器--应用程序调度和编排简介(应用程序调试技术)
本文地址:https://www.idcbaba.com/guowai/5533.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



