51

混沌工程如何驱动Kubernetes可靠性

 5 years ago
source link: http://dockone.io/article/6006?amp%3Butm_medium=referral
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.

混沌工程如何驱动Kubernetes可靠性

译者的话:这篇文章主要讲述了混沌工程的现状和 MayaData 工具集是如何利用混沌工程来驱动kubernetes可靠性。

原文链接

毫无疑问,宕机是一个公司成功的最大风险之一。没有哪个系统是万无一失的,所以在它毁灭你的公司之前毁灭你的系统是件非常好的事情(理想的是在投入生产之前)。

这是 SRE (Systems Resiliency Engineering)的终极目标,这也是驱使Netflix公司开始投资混沌工程的原因。混沌工程的目的是最大限度使用自动化系统,归零分布式系统的混乱、无序和毁坏。从那个时候起,人们通过大规模控制混乱来推动业务和软件的稳定。

这里有一个很好的混沌工程定义, ChaosIQ 的工程师兼首席技术官 Sylvain Hellegouarch 是这样说的:

“在某些情况下去询问相关系统行为,并让您能够实时安全地尝试它,这样您就可以与您的团队一起查看是否存在真正的弱点并了解正确的响应应该是什么。”

到目前为止, The New Stack 已经与洛基式混沌先驱讨论了混沌工程的好处以及如何衡量其对商业方面好处的方法。今天我们将讨论最流行的混沌工程用例 - 如何支撑您的Kubernetes部署

混沌工程如何驱动Kubernetes可靠性

Kubernetes是容器编排市场的领导者。在kubernetes和云原生的世界中,现在正在积极开发的各种Kubernetes原生工具已经说明了其流行程度。

混沌工程在一些领域中获得相当多的关注,AWS研讨会的最新章节之一就是将混沌工程应用于Kubernetes。

然而,正如它的名字所暗示的,针对Kubernetes的混沌工程貌似有点混乱。Cloud Native Computing Foundation(CNCF)混沌工程工作组正式启动,部分原因是就为了帮助规范其工具领域,以应对该领域需求不断增长所导致的混乱。

“并不是所有工具都可以相互整合, 我们需要一个社区来团结他们”,CNCF的Chris Aniszczyk告诉 The New Stack 。 “混沌工程社区还很新生。 Kubernetes现在是分布式系统的核心,运行在所有云端,包括公共和私有云 - 而且您还需要Kubernetes之外的工具。”

混沌工程团队也希望提高这些工具开发团队的意识,以便他们能够共同努力,改善对更多可用混沌工作流程的整合。

Aniszczyk表示:“像Kubernetes这样的云原生技术可以让组织在现代多变环境中构建和运行可伸缩应用。这些技术使系统具有松耦合、可弹性、易于管理和可观察的特点。 它们允许工程师经常以最少的劳动量进行可预测的高影响力变更。”

“混沌工程是在分布式系统上进行实验的学科,旨在建立对系统抵御生产中动荡环境的能力和信心。在CNCF中,我们认为正确的混沌工程实践是构建真正的云原生系统的关键,并通过调查工作组和项目来支持该学科的进一步发展。”

Aniszczyk继续说,这是为了实现一系列通常会导致故障的常见测试和情景,因此工程师可以了解可能发生以及出现问题时的状况。

我们已经介绍了 Gremlin’s Failure as a Service 如何被用于商业目标的巨大突破,但现在让我们进入另一个混沌工具 Litmus ,这个工具正在着手研究如何稳定存储的主题。

混沌工程与kubernetes的存储和安全

当Evan Powell和Uma Mukkara创建MayaData时,它的目的是为Kubernetes创建端到端的数据敏捷性,因为“真正的问题出现在稳定的应用程序和数据库的喷发中”。

MayaData工具集包括原生容器、开源OpenEBS,用于在Kubernetes周边调配、存储和保护数据,并将数据作为堆栈的基础层。 该公司还创建了MayaOnline作为观察和跨面板控制件。

“你存储并保护了数据,但我真的很想看看应用程序上发生了什么,”Mukkara说。 “之前每个应用程序都是跑在裸机上,现在有数十个甚至数百个容器,”这更需要数据必须可观察。

“我们的用户可以连接那些Kubernetes集群,看看他们是如何做的,”他继续说道。 “企业正在应用多云,所以我们想给一个控制面板,他们可以在一个地方看到所有东西。

例如,一家公司在AWS,微软Azure和谷歌Cloud的存储总量是多少?

MayaOnline基于云数据操作平台展示了您的有状态应用程序运行状况,而且可以与预测分析一起进行,以帮助运营团队更好地理解和控制其数据。

但是如果其中一个存储资源出现故障呢? MayaData团队构建了一个内部工具,后来他们实现了公共用例。 今年5月,他们公开发布了一个名为Litmus的开源框架,该框架是一个测试工具,用于验证和强化容器,重点解决以下问题:

  • 功能性
  • 可扩展性
  • 性能
  • 可靠性 - 包括负面,失败路径和混乱

Litmus面向如下各种用户:

  • 使用混沌API的数据库开发人员
  • 在部署之前和之后测试混乱的运维团队
  • 希望看到结果的CIO和软件副总裁
  • 存储提供商
  • 数据库供应商,如Mongo和Cassandra

Mukkara说,它“引入了混乱和测量观察结果,并很好地将它们应用于应用程序的行为,”在生产过程中或者生产部署之后验证和强化应用程序。

他接着将MayaData工具集描述为“在Kubernetes上运行 有状态应用程序 的用户的完整解决方案”。

这个系统如何更好地解决在Kubernetes上运行的有状态应用程序?Mukkara说提供了该公司某个电子商务巨头客户的例子。

“我们的一个用户有一个巨大的IT系统正在迁移到Kubernetes,主要问题是:'如何让我的数据库变成一个更容易管理的使用容器的CI/CD(持续集成/持续部署)平台?'他们系统中有400多名开发人员以及他们真正需要的是快速获取数据库快照并根据数据进行测试和更改的方法。”

只有当代码更改被标记为高质量时,才可以将其投入生产。

“他们可以编写例如 - 有一个12节点Kubernetes集群,因为他们与Litmus集成,他们可以撤下一个节点,看看应用程序是否继续运行,或者引入更多的混乱,例如让应用程序运行在CI/CD管道上,“Mukkara继续说道。

这些容器工具解决了用户将其单体应用转移到基于Kubernetes和微服务系统栈的问题。

“他们能够确保测试中的数据是真实的,并且他们能够通过真实数据测试代码更改并通过他们的CI/CD管道进行测试”,通过Litmus和MayaOnline。

OpenEBS实现了这一过程的自动化,使DevOps人员能够走出去,提出更好的数据配置建议,解决如何更加节省时间的需求,以及DevOps的其他问题。

有了这些MayaData工具,Mukkara说:“只需要几个人就应该能够在这些以前需要10到15个人的大系统上进行管理工作。”

此外,借助OpenEBS,用户可以减少获取数据快照的时间以及测试时间。重点是可以立即开始,而不是几天,让开发人员立即启动自己的管道进行测试。

MayaData工具集中的所有内容都是围绕存储操作和API构建存储、数据保护和可视性。 Mukkara说,这一切激发了对更多混沌工程工具的渴望。

“每个人都在试图采用新技术,他们真正想要的其实是确定性,”他说。

这一切都是围绕如何发布稳定的应用程序,你可以拥有确定性并将保持这种状态。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK