前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >混沌工程之ChaosMesh使用之二模拟POD网络丢包

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

作者头像
高楼Zee
发布2021-07-14 11:16:48
6730
发布2021-07-14 11:16:48
举报
文章被收录于专栏:7DGroup

在《混沌工程之ChaosBlade-Operator使用之一模拟POD丢包场景》中,我们提到过一次丢包场景的模拟了,但是不同的混沌工具,是否有不同的实现方式呢?

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

前面的环境部分,我就不再重复了,你可以去看一下《混沌工程之ChaosMesh使用之一模拟CPU使用率》,如果不出意外,我们的环境都是不会改变的。

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

目标

模拟POD产生丢包

配置
  • yaml文件配置
代码语言:javascript
复制
[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文件配置的,直接执行下面的命令即可。

代码语言:javascript
复制
[root@s5 ChaosMesh]# kubectl apply -f network-loss.yaml -n chaos
networkchaos.chaos-mesh.org/network-loss-example created
[root@s5 ChaosMesh]#

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

验证
代码语言:javascript
复制
-- 进入容器,执行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不了解的,可以看下我在2018年写的这篇文章《性能场景之网络模拟》。

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

恢复
代码语言:javascript
复制
-- 删除试验案例
[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命令怎么办?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标
  • 配置
  • 执行
  • 验证
  • 恢复
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档