当前位置:网站首页>【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
边栏推荐
- Greenplum6.x常用语句
- let const
- JS operation
- Digital triangle model acwing 275 Pass a note
- 路由信息协议——RIP
- idea里使用module项目的一个bug
- 最长上升子序列模型 AcWing 1017. 怪盗基德的滑翔翼
- The longest ascending subsequence model acwing 1017 Strange thief Kidd's glider
- 求有符号数的原码、反码和补码【C语言】
- Selenium automation integration, eight years of testing experience, soft test engineer, an article to teach you
猜你喜欢
Nanjing commercial housing sales enabled electronic contracts, and Junzi sign assisted in the online signing and filing of housing transactions
leetcode135. Distribute candy
ncs成都新電面試經驗
xray的简单使用
[step on the pit] Nacos registration has been connected to localhost:8848, no available server
Goldbach conjecture C language
Pointer advanced, string function
About using CDN based on Kangle and EP panel
Platformization, a fulcrum of strong chain complementing chain
Digital triangle model acwing 1027 Grid access
随机推荐
ncs成都新電面試經驗
Opencv converts 16 bit image data to 8 bits and 8 to 16
测试踩坑 - 当已有接口(或数据库表中)新增字段时,都需要注意哪些测试点?
Shell script for changing the current folder and the file date under the folder
Greenplum6.x-版本变化记录-常用手册
Greenplum 6.x common statements
cmake命令行使用
Frequently Asked Coding Problems
Required String parameter ‘XXX‘ is not present
为不同类型设备构建应用的三大更新 | 2022 I/O 重点回顾
Sign and authenticate API interface or H5 interface
Find the original code, inverse code and complement of signed numbers [C language]
数据库存储---表分区
Gson converts the entity class to JSON times declare multiple JSON fields named
Output all composite numbers between 6 and 1000
Why choose cloud native database
National SMS center number inquiry
redis故障处理 “Can‘t save in background: fork: Cannot allocate memory“
联想混合云Lenovo xCloud:4大产品线+IT服务门户
Platformization, a fulcrum of strong chain complementing chain