当前位置:网站首页>【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
边栏推荐
- Sign and authenticate API interface or H5 interface
- 模拟卷Leetcode【普通】1567. 乘积为正数的最长子数组长度
- Gson转换实体类为json时报declares multiple JSON fields named
- 数字三角形模型 AcWing 1027. 方格取数
- Mountaineering team (DFS)
- [wechat applet: cache operation]
- Lenovo hybrid cloud Lenovo xcloud: 4 major product lines +it service portal
- Routing information protocol rip
- [Yu Yue education] C language programming reference of Zhongbei College of Nanjing Normal University
- Qt Charts使用(重写QChartView,实现一些自定义功能)
猜你喜欢
A bug using module project in idea
ESP32-ULP协处理器低功耗模式RTC GPIO中断唤醒
MySQL主从延迟的解决方案
[Nanjing University] - [software analysis] course learning notes (I) -introduction
数字三角形模型 AcWing 1027. 方格取数
联想混合云Lenovo xCloud:4大产品线+IT服务门户
[MySQL] detailed explanation of trigger content of database advanced
Appeler l'interface du moteur de création du service multimédia de jeu Huawei renvoie le Code d'erreur 1002, le message d'erreur: les paramètres sont l'erreur
使用Typora编辑markdown上传CSDN时图片大小调整麻烦问题
[Yugong series] February 2022 U3D full stack class 006 unity toolbar
随机推荐
如何在图片的目标中添加目标的mask
[Chongqing Guangdong education] organic electronics (Bilingual) reference materials of Nanjing University of Posts and Telecommunications
年薪50w阿里P8亲自下场,教你如何从测试进阶
LeetCode 736. Lisp 语法解析
[Yugong series] February 2022 U3D full stack class 006 unity toolbar
Rapid integration of authentication services - harmonyos platform
Greenplum6.x重新初始化
Upload an e-office V9 arbitrary file [vulnerability recurrence practice]
Simple use of Xray
What are the advantages of commas in conditional statements- What is the advantage of commas in a conditional statement?
数据分片介绍
GoLand set goproxy
About using CDN based on Kangle and EP panel
【MySQL】数据库进阶之触发器内容详解
9c09730c0eea36d495c3ff6efe3708d8
测试人一定要会的技能:selenium的三种等待方式解读,清晰明了
Problems encountered in the use of go micro
路由信息协议——RIP
更改当前文件夹及文件夹下文件日期shell脚本
Gson转换实体类为json时报declares multiple JSON fields named