核心内容摘要
守护innocence:当萌系力量遇上坚实铠甲
文章目录容器的故障注入测试
启动一个nginx容器
切换到容器的网络命名空间
进行故障注入
总结✨✨✨学习的道路很枯燥希望我们能并肩走下来编程真是一件很奇妙的东西。
你只是浅尝辄止那么只会觉得枯燥乏味像对待任务似的应付它。
但你如果深入探索就会发现其中的奇妙了解许多所不知道的原理。
知识的力量让你沉醉甘愿深陷其中并发现宝藏。
本文开始容器的故障注入测试
启动一个nginx容器dockerrun --namenginx -d使用docker inspect命令查询当前容器的 PIDdockerinspect
切换到容器的网络命名空间目前看业务需要测试什么空间可以选择这里以切换到网络命名空间为例使用nsenter -t [pid] -n 切换到容器的网络名称空间【注】
nsenter中的ns就是namespace
切换后只有网络命名空间在容器网络中
仅切换网络视角看到容器的网络设备信息其他资源如文件系统、进程列表仍然是宿主机的因为你只进入了 -n网络命名空间没进其他 namespace。
# 根据pid切换到网络命名空间这里pid是5131nsenter -t5131-n# 查看网络设备信息,只能查看容器的网络设备信息ifconfig# 查看其他进程信息, ps aux 显示的是整个宿主机的所有进程psaux【重点】切换某个命名空间成功后看到的就是容器中的对应信息而不是宿主机的信息
进行故障注入简单示例说明具体的可以查看相关详细资料使用iptables/tc等命令进行故障注入两种命令都可以修改内核网络层工具全称作用故障注入能力iptablesIP TablesLinux 内核防火墙工具模拟 网络中断、拒绝连接、丢包部分tcTraffic ControlLinux 流量控制工具模拟 网络延迟、丢包、带宽限制、乱序示例# 故障注入-拒绝所有连接数据包iptables# 模拟用户在 4G/跨国网络下访问服务变慢# 在容器或宿主机上执行需 root 权限tc qdiscadddev eth0 root netem delay 300ms参数说明eth0网络接口容器内通常是 eth0宿主机可能是 ens33 等delay 300ms所有出站流量增加 300 毫秒延迟部分说明tcTraffic Control 的缩写Linux 内核提供的流量控制工具用于管理网络队列、限速、模拟网络异常等。
qdiscQueueing Discipline排队规则即“如何处理出站数据包的队列”。
这是tc的核心对象每个网络接口都有一个默认 qdisc通常是pfifo_fast。
add添加一个新的 qdisc 规则。
dev eth0指定操作的网络设备interface这里是eth0容器内通常为eth0宿主机可能是ens
enp0s3等。
root表示将这个 qdisc 作为根规则替换默认队列所有从该接口发出的数据包都会经过它。
netemNetwork Emulator网络模拟器是tc的一个 qdisc 类型专门用于模拟各种网络问题延迟delay、丢包loss、乱序reorder、重复duplicate等。
delay 300ms具体模拟的行为给所有出站数据包增加 300 毫秒的固定延迟。
总结✨✨✨各位读友本篇分享到内容是否更好的帮助你理解如果对你有帮助给个赞鼓励一下吧世上没有绝望的处境只有对处境绝望的人。
一遇挫折就灰心丧气的人永远是个失败者。
而一向努力奋斗坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴我们可以一起交流进步一起加油吧