写点什么

开源框架 Litmus,支持 Kubernetes 混沌工程

作者:K Jonas

  • 2019-06-12
  • 本文字数:1284 字

    阅读完需:约 4 分钟

开源框架 Litmus,支持 Kubernetes 混沌工程

Litmus是一种开源混沌工程框架,用于在 Kubernetes 环境中运行有状态应用。Litmus 项目由MayaData公司推出,支持用户运行测试套件、捕获日志、生成报告并执行混沌测试。Litmus 也支持作为端到端测试方法的组成部分,添加到 CI/CD 流水线中。


Litmus 设计用于捕获难以检测的 Kubernetes 中软件缺陷,这些软件缺陷通常会被单元测试或集成测试遗漏。Litmus 支持运行两类测试:混沌测试和功能测试。混沌测试主要针对应用的可扩展性,框架中提供了多个预置测试,主要针对容器崩溃、磁盘故障、网络延迟和网络包丢失等预期外行为。功能测试则用于确保达到系统需求,其中包括对应用规模可扩展等需求的测试。Litmus 还可用于判定 Kubernetes 部署是否适用于有状态工作负载。


Litmus 在组成上包括四个主要组件。部署组件(Deployments)设置测试所用的 Kubernetes 集群。推进组件(Facilitators)通过运行测试套件、捕获日志和生成报告为测试执行提供支持。测试组件(Test modules)包含了一些容器化的测试,执行测试时在 Kubernetes 集群内触发。第四个组件就是测试本身。


Litmus 测试在Litmus文档中称为“实验”(experiment)。运行 Litmus 实验,需要从 Litmus 的实验目录中选取已有的混沌实验,更新应用,对通过环境变量传递的值进行测试,进而并使用kubectl运行 litmusbook。运行命令如下:


kubectl create -f experiments/chaos/run_litmus_test.yml


测试运行在容器中。在评估测试和环境变量后,Litmus 会编排所需架构,利用Pumba开源软件工具执行实验。在实验执行完成后,Litmus 将基于一些预定义的已有标准,评估实验是否成功。测试结果与测试元数据一并在一种称为“Kubernetes 自定义资源”Kubernetes Custom Resource中存储。进而,运行 Litmus 的 CI/CD 流水线可以过根据自定义资源判定任务的状态。



Litmus 架构(图片来自 Litmus 官方文档)


Litmus 测试可使用 Go 的 Cucumber BDD 框架Godog 等编写类英语的 BDD 形式,也可以使用Ansible Playbooks编写并由 Litmus Test Playbook 组件分组管理。大部分 Litmus 测试采用 Ansible Playbooks,在 Kubernetes 任务控制器管理下在 Kubernetes 的 Pod 中执行。测试可在运行时使用环境变量,并对一些通用的和专门的测试功能任务引入测试软件库。Litmus 还提供了Chaos-Exporter功能,用于向 Prometheus 终端提供混沌度量。


Litmus 的创立者是MayaData。MayaData 也是 Kubernetes 原生开源容器附属存储解决方案OpenEBS的主要提供者。Litmus 项目的初衷是为有状态 Kubernetes 应用提供端到端的验证。Litmus公司的目标是确保有状态的应用程序能够在 Kubernetes 中运行,并确信数据是安全的和可访问的。Litmus 在设计上考虑了可扩展并支持各种持久存储解决方案,目前它支持 Percona MySQL、MongoDB、Apache Cassandra 和 Minio 等多种有状态应用,并覆盖了部署、加载、重调度、扩展、升级和取消服务(de-provision)等多个通用的应用生命周期场景。


想要上手使用 Litmus 的用户,推荐查看Github代码库官方文档中给出的“Getting Started”章节。


查看英文原文: [Chaos Engineering Kubernetes with the Litmus Framework](


2019-06-12 08:008237
用户头像

发布了 391 篇内容, 共 137.7 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

AWS IoT Core设计解析

soolaugust

边缘计算 AWS 工业4.0 工业物联网 iiot

开发技巧 | mPaaS 小程序自定义事件,如何取消注册?

蚂蚁集团移动开发平台 mPaaS

小程序 API mPaaS

Gradle doesn't run because it can't find tools.jar in JRE

mengxn

kotlin Gradle

双非本硕四面百度竟意外成功?看完我的面试经历 网友都称:过于优秀

比伯

Java 编程 架构 面试 计算机

高速公路二维码定位报警系统搭建解决方案

t13823115967

高速公路二维码定位报警 智慧公安

解锁高速 IT 团队利器:Jira Service Management

Atlassian

DevOps Atlassian Jira ITSM ITIL

漫画:什么是 “智能供应链” ?

京东科技开发者

云计算 供应链 智能供应链

有奖讨论|作为程序员,女朋友是怎么吐槽你的?

Simon郎

女朋友 话题讨论

🤳你要悄悄变优秀,然后惊艳所有人

蚂蚁集团移动开发平台 mPaaS

mPaaS 智能投放 界面改版 产品资讯

小心踩雷,一次Java内存泄漏排查实战

AI乔治

Java 架构 JVM 内存

了不起的 Deno:带你极速获取各大平台今日热榜

华为云开发者联盟

Java 安全 deno

深度剖析github star数15.1k的开源项目redux-thunk

徐小夕

Java GitHub 大前端 React

淦!终于有人把Java 8和Spring 5完美合体了,业界堪称“神迹”

Java架构追梦

Java spring 架构 面试 springboot

语音识别端到端模型解读:FSMN及其变体模型

华为云开发者联盟

大数据 模型 语音识别

LiteOS基于Sensorhub的超声波模组移植

华为云开发者联盟

物联网 LiteOS 超声波

数据结构与算法系列之跳表(GO)

书旅

数据结构 算法 Go 语言

整天都在讨论使用SpringBoot,可你居然连缓存都不清楚

小Q

Java 缓存 学习 面试 springboot

记一次GC频繁且间隔较长解决实战总结

AI乔治

Java 架构 JVM GC

专访阿里云 Serverless 负责人:无服务器不会让后端失业

阿里巴巴云原生

Serverless 微服务 云原生 CloudNative 无服务器

华为云&跟谁学|华为云API入门学习赛·AI人脸识别 未来工程师梦想的起点

DT极客

从零开始搭建Kafka+SpringBoot分布式消息系统

小Q

kafka zookeeper 学习 面试 springboot

「linux」Socket缓存是如何影响TCP性能的?

linux大本营

Linux 后台开发 socket 架构师 TCP/IP

高并发的核心 - AQS【哪些琐是基于AQS来实现的】

Java架构师迁哥

区块链落地开发,区块链版权应用搭建

t13823115967

区块链+ 区块链落地开发 区块链版权应用搭建

接口测试之post常见数据提交方式

测试人生路

post 接口测试

360OS张焰:AI视觉在教育中的应用

ZEGO即构

为什么short、byte会被提升为int?及基本类型的真实大小

烫烫烫个喵啊

Java JVM

年轻人,快来看看分布式与集群的区别是什么?

程序员小灰

redis 分布式 后台开发 集群 Linux服务器开发

深入解读:KubeVela 与 PaaS 有何不同?

阿里巴巴云原生

阿里云 开源 容器 云原生 CloudNative

Linux常用命令速查

jiangling500

linux命令

Forsage智能合约系统APP开发|Forsage智能合约软件开发(现成)

系统开发 现成系统

开源框架 Litmus,支持 Kubernetes 混沌工程_开源_InfoQ精选文章