混沌工程之ChaosMesh使用之模拟POD网络丢包

举报
zuozewei 发表于 2024/05/26 20:29:25 2024/05/26
【摘要】 混沌工程之ChaosMesh使用之模拟POD网络丢包

前言

今天我们来玩一个 ChaosMesh 的网络丢包,看一下有没有新鲜的玩意。

前面的环境部分,我就不再重复了,你可以去看下前面的文章,如果不出意外,我们的环境都是不会改变的。

所以我们现在就直接进入操作步骤。

模拟 POD 产生丢包

配置文件

yaml 文件配置:

[root@s5 ChaosMesh]# cat network-loss.yaml
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
  name: network-loss-example
  namespace: chaos
spec:
  action: loss
  mode: one
  selector:
    labelSelectors:
      "k8s.kuboard.cn/name": "svc-7dmall"
  loss:
    loss: "25"
    correlation: "25"
  duration: "10s"
  scheduler:
    cron: '@every 15s'

界面配置:
在这里插入图片描述
在这里插入图片描述
不管是用 yaml 文件配置试验案例,还是在界面上配置,其效果一样。

执行

如果是用 yaml 文件配置的,直接执行下面的命令即可。

[root@s5 ChaosMesh]# kubectl apply -f network-loss.yaml -n chaos
networkchaos.chaos-mesh.org/network-loss-example created
[root@s5 ChaosMesh]#

如果是在界面配置的,提交成功之后即开始执行。

验证

-- 进入容器,执行ping命令
[root@svc-7dmall-664d59f75b-whtvc /]# ping 10.100.220.96
PING 10.100.220.96 (10.100.220.96) 56(84) bytes of data.
64 bytes from 10.100.220.96: icmp_seq=1 ttl=62 time=0.612 ms
64 bytes from 10.100.220.96: icmp_seq=2 ttl=62 time=0.269 ms
64 bytes from 10.100.220.96: icmp_seq=3 ttl=62 time=0.236 ms
64 bytes from 10.100.220.96: icmp_seq=4 ttl=62 time=0.279 ms
^C
--- 10.100.220.96 ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.236/0.349/0.612/0.152 ms
[root@svc-7dmall-664d59f75b-whtvc /]#

-- 查看队列
[root@svc-7dmall-664d59f75b-whtvc /]# tc qdisc ls dev eth0
qdisc netem 1: root refcnt 2 limit 1000 loss 25% 25%
[root@svc-7dmall-664d59f75b-whtvc /]#

从上面的结果来看,丢包确实产生了。并且也和 chaosblade-operator 的逻辑一样是用 tc 命令在 qdisc 上模拟了丢包动作。看来没有新花样。

如果对tc不了解的,可以看下我以前的这篇文章《Linux 网络故障模拟工具TC》。

对混沌工具的理解一定要达到理解原理的程度,才不会迷糊。如果你知道了这个原理的话,不用混沌工具,手工也能做混沌案例。

恢复

-- 删除试验案例
[root@s5 ChaosMesh]# kubectl delete -f network-loss.yaml -n chaos
networkchaos.chaos-mesh.org "network-loss-example" deleted
[root@s5 ChaosMesh]#

-- 进入容器,查看队列
[root@svc-7dmall-664d59f75b-whtvc /]# tc qdisc ls dev eth0
qdisc noqueue 0: root refcnt 2
[root@svc-7dmall-664d59f75b-whtvc /]#

留下一个思考的空间

如果容器的原始 image 没有 tc 命令怎么办?

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。