当前位置:网站首页>【ChaosBlade:节点 CPU 负载、节点网络延迟、节点网络丢包、节点域名访问异常】
【ChaosBlade:节点 CPU 负载、节点网络延迟、节点网络丢包、节点域名访问异常】
2022-07-07 06:20:00 【仙女肖消乐】
节点 CPU 负载
目标: 指定一个节点,做 CPU 负载 80% 实验
node_cpu_load.yaml内容:
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
name: cpu-load
spec:
experiments:
- scope: node
target: cpu
action: fullload
desc: "increase node cpu load by names"
matchers:
- name: names
value:
- "docker20"
- name: cpu-percent
value:
- "80"
选择一个节点,修改 node_cpu_load.yaml 中的 names 值。
执行命令:
$ kubectl apply -f node_cpu_load.yaml
查看状态
执行 kubectl get blade cpu-load -o json 命令,查看实验状态。
查看结果
进入该 Node 节点,使用 top 命令可以看到该节点 CPU 达到预期效果。
停止
执行命令:kubectl delete -f node_cpu_load.yaml
或者直接删除 blade 资源:kubectl delete blade cpu-load
节点网络相关场景
操作前,请先登录 node 节点,使用 ifconfig 命令查看网卡信息,不是所有系统默认的网卡名称都是 eth0
节点网络延迟场景
目标: 指定节点的本地 32436 端口添加 3000 毫秒访问延迟,延迟时间上下浮动 1000 毫秒
选择一个节点,修改 delay_node_network_by_names.yaml 中的 names 值
对 docker20 节点本地端口 32436 访问丢包率 100%。
delay_node_network_by_names.yaml 内容:
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
name: delay-node-network-by-names
spec:
experiments:
- scope: node
target: network
action: delay
desc: "delay node network loss"
matchers:
- name: names
value: ["docker20"]
- name: interface
value: ["ens33"]
- name: local-port
value: ["32436"]
- name: time
value: ["3000"]
- name: offset
value: ["1000"]
执行命令:
$ kubectl apply -f delay_node_network_by_names.yaml
查看状态
执行 kubectl get blade delay-node-network-by-names -o json 命令,查看实验状态。
查看结果
# 从实验节点访问 Guestbook
$ time echo "" | telnet 192.168.1.129 32436
Trying 192.168.1.129...
Connected to 192.168.1.129.
Escape character is '^]'.
Connection closed by foreign host.
echo "" 0.00s user 0.00s system 35% cpu 0.003 total
telnet 192.168.1.129 32436 0.01s user 0.00s system 0% cpu 3.248 total
停止
执行命令:kubectl delete -f delay_node_network_by_names.yaml
或者直接删除 blade 资源:kubectl delete blade delay-node-network-by-names
节点网络丢包场景
目标: 指定节点的 32436 端口注入丢包率 100% 的故障
选择一个节点,修改 loss_node_network_by_names.yaml 中的 names 值。
loss_node_network_by_names.yaml 内容:
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
name: loss-node-network-by-names
spec:
experiments:
- scope: node
target: network
action: loss
desc: "node network loss"
matchers:
- name: names
value: ["docker20"]
- name: percent
value: ["100"]
- name: interface
value: ["ens33"]
- name: local-port
value: ["32436"]
执行命令,开始:
$ kubectl apply -f loss_node_network_by_names.yaml
查看状态
执行 kubectl get blade loss-node-network-by-names -o json 命令,查看状态。
查看结果
该端口为 Guestbook nodeport 的端口,访问实验端口无响应,但是访问未开启实验的端口可以正常使用:
# 获取节点 IP
$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
docker20 Ready worker 3d16h v1.17.6 192.168.1.129 <none> Ubuntu 18.04.4 LTS 4.15.0-101-generic docker://19.3.11
kk Ready controlplane,etcd,worker 4d16h v1.17.6 192.168.4.210 <none> Ubuntu 18.04.4 LTS 4.15.0-101-generic docker://19.3.11
# 从操作节点访问 Guestbook - 无法访问
$ telnet 192.168.1.129 32436
Trying 192.168.1.129...
telnet: connect to address 192.168.1.129: Operation timed out
telnet: Unable to connect to remote host
# 从非操作节点访问 Guestbook - 正常访问
$ telnet 192.168.4.210 32436
Trying 192.168.4.210...
Connected to 192.168.4.210.
Escape character is '^]'.
同样也可以直接从浏览器访问地址验证。
停止
执行命令:kubectl delete -f loss_node_network_by_names.yaml
或者直接删除 blade 资源:kubectl delete blade loss-node-network-by-names
节点域名访问异常场景
目标: 本实验通过修改 Node 的 hosts,篡改域名地址映射,模拟 Pod 内域名访问异常场景。
选择一个节点,修改 dns_node_network_by_names.yaml 中的 names 值。
dns_node_network_by_names.yaml 内容:
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
name: dns-node-network-by-names
spec:
experiments:
- scope: node
target: network
action: dns
desc: "dns node network by names"
matchers:
- name: names
value:
- "docker20"
- name: domain
value: ["www.baidu.com"]
- name: ip
value: ["10.0.0.1"]
执行命令,开始实验:
$ kubectl apply -f dns_node_network_by_names.yaml
查看实验状态
执行 kubectl get blade dns-node-network-by-names -o json 命令,查看实验状态。
查看实验结果
# 进入实验 node
$ ssh [email protected]
# Ping www.baidu.com
$ ping www.baidu.com
# 无响应
可以看到 Node 的 /etc/hosts 文件被修改,模拟了 dns 解析异常的场景。
停止
执行命令:kubectl delete -f dns_node_network_by_names.yaml
或者直接删除 blade 资源:kubectl delete blade dns-node-network-by-names
边栏推荐
- 阿里p8手把手教你,自动化测试应该如何实现多线程?赶紧码住
- MySQL主从延迟的解决方案
- 求有符号数的原码、反码和补码【C语言】
- Oracle makes it clear at one time that a field with multiple separators will be split into multiple rows, and then multiple rows and columns. Multiple separators will be split into multiple rows, and
- How to realize sliding operation component in fast application
- [wechat applet: cache operation]
- Greenplum6.x-版本变化记录-常用手册
- LeetCode 715. Range module
- 路由信息协议——RIP
- selenium自动化集成,八年测试经验软测工程师,一篇文章带你学懂
猜你喜欢

Greenplum 6.x reinitialization

LeetCode 715. Range module

How to realize sliding operation component in fast application

为不同类型设备构建应用的三大更新 | 2022 I/O 重点回顾

Lenovo hybrid cloud Lenovo xcloud: 4 major product lines +it service portal

ncs成都新電面試經驗

阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳

Analysis of using jsonp cross domain vulnerability and XSS vulnerability in honeypot

Routing information protocol rip

ncs成都新电面试经验
随机推荐
How to add a mask of a target in a picture
Goldbach conjecture C language
oracle一次性说清楚,多种分隔符的一个字段拆分多行,再多行多列多种分隔符拆多行,最终处理超亿亿。。亿级别数据量
JS operation
[Chongqing Guangdong education] organic electronics (Bilingual) reference materials of Nanjing University of Posts and Telecommunications
使用Typora编辑markdown上传CSDN时图片大小调整麻烦问题
NCS Chengdu Xindian interview experience
National SMS center number inquiry
Why choose cloud native database
C language for calculating the product of two matrices
Newly found yii2 excel processing plug-in
Mock. JS usage details
Interpolation lookup (two methods)
let const
Novice entry SCM must understand those things
Pointer advanced, string function
FPGA knowledge accumulation [6]
Compilation and linking of programs
uniapp 微信小程序监测网络
Upload an e-office V9 arbitrary file [vulnerability recurrence practice]