如何随意模拟每个单独的 Docker 容器的网络丢失?

How to simulate network drops for each individual Docker container at will?

我想对 运行 容器内的 运行 应用程序执行一些压力测试。简单的场景,例如转 on/off 丢弃指定 IP 地址的所有数据包。

我尝试了一些工具,但 none 似乎让我满意:

  1. 正在断开容器与桥接网络的连接 - 遗憾的是它会断开所有连接,而不仅仅是指定的 ips。

  2. 从容器内部设置 iptables 规则 - 它需要以特权模式启动容器,这不是一个好的做法(我希望有一种方法甚至适用于生产环境)。

  3. 修改主机的 iptables 看起来也不是一个选项 - 我想为特定容器而不是主机上的所有容器创建网络问题。

我应该研究哪些可能的方法?
是否有混沌工程工具可以满足此类需求?

对于 docker 容器内容,我们通常使用 https://github.com/alexei-led/pumba,它基本上将 tc 的所有功能带入 docker 世界。在 k8s 中,我们通常将其部署为 DaemonSet,然后(通过正则表达式)攻击特定的 pods / containers / apps)。如果您给我们一个更具体的问题,我很乐意回答具体细节。