Docker Swarm的混沌工具箱扩展

chaostoolkit-docker-swarm的Python项目详细描述


Docker Swarm的混沌工具箱扩展

这是一个混沌工具包扩展包,包含Docker Swarm的探测和操作。它的主要动机是在多节点集群中,Docker没有提供任何方法来对远程节点上的containers进行操作,例如杀死它。因此,为了骚扰服务中的随机容器,您必须登录到Swarm节点并在那里执行命令。在

这个扩展通过在你的群中启动一个全局模式助手服务来解决这个缺点,它在所有节点上安装Docker套接字,从而允许你在任何节点上执行特定的命令。有关详细信息,请参见chaostoolkit-docker-swarm-helper。在

安装

此软件包需要Python3.5+

为了在您的实验中使用,这个包必须安装在chaostoolkit已经存在的Python环境中。新设置可能如下所示:

virtualenv chaosenv -p /usr/bin/python3
. ./chaosenv/bin/activate
pip install chaostoolkit chaostoolkit-docker-swarm

使用

^{pr2}$
docker service create --name redis redis:latest
chaos run ./swarm-experiment.yaml
[2020-01-27 20:34:51 INFO] Validating the experiment's syntax
[2020-01-27 20:34:51 INFO] Experiment looks valid
[2020-01-27 20:34:51 INFO] Running experiment: Redis Docker service should survive container death
[2020-01-27 20:34:51 INFO] Steady state hypothesis: Redis service with running container exists
[2020-01-27 20:34:51 INFO] Probe: Redis container must exist
[2020-01-27 20:34:51 INFO] Steady state hypothesis is met!
[2020-01-27 20:34:51 INFO] Action: Kill a Redis task
[2020-01-27 20:34:51 INFO] Pausing after activity for 5s...
[2020-01-27 20:34:56 INFO] Steady state hypothesis: Redis service with running container exists
[2020-01-27 20:34:56 INFO] Probe: Redis container must exist
[2020-01-27 20:34:56 INFO] Steady state hypothesis is met!
[2020-01-27 20:34:56 INFO] Let's rollback...
[2020-01-27 20:34:56 INFO] No declared rollbacks, let's move on.
[2020-01-27 20:34:56 INFO] Experiment ended with status: completed

配置

此扩展假定您的环境设置为Docker访问,例如使用Docker环境变量。在

试验

要运行项目测试,请执行以下操作:

python3 setup.py test

有一些集成测试假设你有一个Docker Swarm集群可用。您可以通过以下方式将本地dev Docker升级为单节点Swarm集群:

docker swarm init

贡献

如果您想为这个软件包贡献更多的功能,我们非常欢迎您这样做。请,开始这个项目,按照通常的PEP 8代码样式进行更改,添加测试,并提交一份PR以供审阅。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用Ibatis在插入时返回ID(使用返回关键字)   java(org.hibernate.TransactionException)org。冬眠TransactionException:事务未成功启动   java小程序jwindow始终位于JNLP顶部   在Java中重新解析JSON对象?   java单击后将ListView数据移动到新屏幕   Mule ESB中的java WSA寻址特性   Java,对象编程:获取返回0值的方法   hibernate的Java通用问题,如何处理T get(K id)   java在使用超级CSV读取CSV时忽略引用   ssh使用Java远程运行命令   java如何向具体用户发送websocket消息?   在JAVA中,我可以在不指定的情况下使用条件运算符吗?