小程序 移植 云开发_使用Kubernetes探索跨云的应用程序可移植性

 2023-09-18 阅读 25 评论 0

摘要:小程序 移植 云开发 本文与Lindsey Tulloch共同撰写。 小程序云开发是什么意思、 在一个快速迁移到云的世界中,投资者,客户和开发人员正在屏息地注视着“云战争”。 随着云巨头的崛起以及新型基础架构的骨干在我们眼前,对于我们这些实地人士而言,

小程序 移植 云开发

本文与Lindsey Tulloch共同撰写。

小程序云开发是什么意思、 在一个快速迁移到云的世界中,投资者,客户和开发人员正在屏息地注视着“云战争”。 随着云巨头的崛起以及新型基础架构的骨干在我们眼前,对于我们这些实地人士而言,保持敏捷性以维持我们的技术和经济优势至关重要。

从开发和采用的角度来看,可移植的应用程序(能够在操作系统之间无缝运行)是有意义的。 口译语言和运行时环境使应用程序可以在任何地方运行。

假设您有一个部署在本地私有云应用程序中的应用程序,并且有朝一日计划将其完全迁移到公共云。 您如何确保应用程序在公共云基础架构上的可伸缩性? 或者,您可能已经在公共云提供商的基础架构上进行了部署,并由于成本原因决定不再使用该云提供商。 您如何避免供应商锁定并确保顺利过渡到新供应商? 无论选择哪种解决方案,变化都是恒定不变的,并且云中软件应用程序的可移植性是做出任何可能的未来决策的关键。

微服务docker部署? 这不是一个简单的练习。 从支持API到实现计算,存储和网络操作,每个云提供商都有自己的处理方式。 那么,您如何编写与云无关的应用程序代码,使其可在不同的云基础架构之间移植? 克服这些特定于提供商的障碍的答案是Kubernetes。

Kubernetes是用于“自动化容器化应用程序的部署,扩展和管理”的开源软件。 Kubernetes本身是所有基础架构和云提供商的抽象,它使简化的方法可以协调您的所有资源。 Kubernetes允许对多个Kubernetes集群进行编排的功能被恰当地称为多集群。 仍处于早期预α相,多集群(以前联合会 )旨在通过跨越构件簇同步资源简化多个Kubernetes集群的管理。 多群集可通过在群集之间平衡工作负载来保证高可用性,并在发生群集故障时提高可靠性。 此外,它使您能够编写一次应用程序并将其部署在任何单个云提供商或多个云提供商上,从而避免了供应商锁定。

与最初的联邦项目(该项目提供一个单一的控制平面来管理多个联邦Kubernetes集群)相比,当前体系结构采用了更加组合的方法。 诸如kubemci , cluster-registry和federation-v2原型设计之类的较小项目正在解决联邦的基本要素(入口的管理,对单个集群的访问以及工作负载分配),以从头构建联邦生态系统,从而为用户提供更多控制权有关如何在多集群网络中分布和扩展应用程序的信息。

kubernetes 开发、 当工程师在Red Hat的CTO办公室工作时,我们想测试Kubernetes多集群的前景,并进一步探索应用程序的可移植性。 我们着手构建一个可靠的参考应用程序以验证可移植性。 这涉及在Google Cloud,Amazon Web Services和Microsoft Azure中构建单独的Kubernetes集群。 每个Kubernetes集群都是在不同的区域创建的,以测试高可用性的前景。

我们任意选择将托管在Google Cloud中的Kubernetes集群作为主要集群,并使用apiserver-builder向其部署聚合的联合API服务器和控制器。 为了将三个集群连接在一起,我们使用了kubefnord (一种多集群管理工具)。 这给了我们三个跨越三个不同区域的单独的Kubernetes集群-都通过相同的主Kubernetes集群进行管理,如下图所示。

Federation-v2 tree

我们基于开源的Pac-Man HTML5游戏构建了有状态的微服务参考Web应用程序,并将其修改为使用Node.js(为其Web服务器组件,易于调试,容器化功能以及作为我们的后端API提供便利)。 我们使用MongoDB作为分布式数据库来保留有状态块的高分数数据。 我们通过显示详细信息来显示实例正在运行的云提供商的名称,区域和主机名,从而使Pac-Man应用程序具有云感知能力。 最后,我们使用Red Hat Enterprise Linux作为容器操作系统对Pac-Man和MongoDB进行了容器化。

小程序 云, 为了向MongoDB提供持久的卷来存储诸如高分之类的用户数据,我们在每个集群中使用了默认存储类 ,从而可以使用每个云提供商的块存储功能:Google Persistent Disk,Amazon Elastic Block Storage和Azure磁盘。 我们创建了PersistentVolumeClaim (PVC),以便MongoDB部署可以通过引用PVC来简单地请求存储卷,而Kubernetes将提供动态配置的卷 。 随后,我们通过构建分布式MongoDB集将容器化的MongoDB部署到联邦Kubernetes集群上,以便将高分数数据复制到联盟中的每个Kubernetes集群上。 然后,我们将每个群集中MongoDB服务的每个负载平衡器IP地址映射到DNS条目,以实现负载平衡和高可用性。

在对Pac-Man进行容器化之后,我们将其与容器化的MongoDB一起部署到了三个Kubernetes集群中。 这涉及将每个群集中的Pac-Man服务的每个负载平衡器IP地址映射到DNS条目。 最终结果如下所示:

Federation_v2 pacman.example.com

现在,我们已经成功地在三个最大的公共云提供商之间扩展了我们的应用程序! 此示例可能足够容易地包含本地私有云。 但是,如果我们想缩减特定云提供商的应用程序规模呢?

uniapp和原生小程序混合开发、 为了验证该用例,我们仅按照上述概述的步骤部署了应用程序,但这次仅在Google Cloud Platform和Amazon Web Services上进行过。 在两个提供商上都部署了该应用程序后,我们更新了Kubernetes YAML资源的展示位置偏好设置,以反映我们希望吃豆人应用程序仅在Google Cloud Platform上运行。 通过联合界面应用更改后,Pac-Man应用程序部署Swift更新为仅在我们的Google Cloud Platform Kubernetes集群上运行。 我们的缩减成功了!

Pac-Man game

正如我们的简短演练所展示的那样,Kubernetes federation-v2支持软件应用程序的可移植性。 重要的是Kubernetes提供了可在任何云提供商之间使用的通用平台。 将多集群功能添加到组合中时,您只需编写一次应用程序代码,即可在任何云提供商组合中进行部署。 因此,您可以放心,只要有一个共同的标准:Kubernetes,您今天编写的应用程序代码就可以轻松地跨云提供商部署。


本文基于“ 使用Kubernetes探索跨云的应用程序可移植性 ”,作者将在5月8日至10日在旧金山举行的Red Hat Summit 2018上发表演讲。 5月7日前注册可节省500美元的注册费用。 在付款页面上使用折扣码OPEN18来应用折扣。

开源云原生平台、翻译自: https://opensource.com/article/18/5/exploring-application-portability-kubernetes

小程序 移植 云开发

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/73227.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息