k8s pod网络故障注入,命令行实现

news/2024/9/22 14:12:47/

工具介绍

  • crictl工具:用于查询k8s pod和容器信息
  • nsenter工具:用于进入容器网络命名空间
  • tc工具:注入网络故障

实现k8s pod级别网络故障

  1. 首先查找故障注入的pod的宿主机,并ssh登陆进去
kubectl get pod -n <namespace> -owide
  1. 使用 kubectl 获取 Pod 的容器 ID,例如第1个
kubectl get pod <pod-name> -o jsonpath='{.status.containerStatuses[0].containerID}' | cut -d'/' -f3
  1. 使用crictl获取容器的 PID
crictl inspect --output=go-template --template="{{.info.pid}}" <pod_container_id>
  1. 使用nsenter进入网络命名空间
nsenter -n -t $pod_pid

进入网络空间前后对比,进入网络空间后,eth0的ip应为pod ip

(tob_env) root@n73-001-014:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.72.3.100  netmask 255.255.255.0  broadcast 10.72.3.250inet6 fe50::216:3eff:fe50:fe50  prefixlen 64  scopeid 0x20<link>ether 00:36:3e:36:5b:36  txqueuelen 1000  (Ethernet)RX packets 38875633274  bytes 15496787166310 (14.0 TiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 31492296646  bytes 17143859349471 (15.5 TiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0(tob_env) root@n73-001-014:~# nsenter -n -t 501532(tob_env) root@n73-001-014:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet 172.26.25.6  netmask 255.255.255.255  broadcast 172.26.25.6inet6 fe80::b322:e9ff:fe7e:b322  prefixlen 64  scopeid 0x20<link>ether ba:22:e9:22:b3:22  txqueuelen 0  (Ethernet)RX packets 8077026811  bytes 1361131463473 (1.2 TiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6472821861  bytes 1134318477480 (1.0 TiB)TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0
  1. 进入网络命名空间后,你就可以在该命名空间中执行各种网络相关的命令了

    • 通过tc工具注入网络故障
tc qdisc add dev eth0 root netem loss 100%
sleep 300
tc qdisc del dev eth0 root

http://www.ppmy.cn/news/1528848.html

相关文章

通信工程学习:什么是VLAN虚拟局域网

VLAN&#xff1a;虚拟局域网 VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将物理局域网在逻辑上划分成多个广播域的通信技术。以下是关于VLAN的详细解释&#xff1a; 一、VLAN虚拟局域网的定义与概述 VLAN通过逻辑方式将网络中的设备…

计算机网络通关学习(二)

TCP/IP OSI七层模型&#xff0c;注意TCP/IP为协议簇&#xff0c;即TCP/IP并不单单指TCP、IP两个协议&#xff0c;其也包括了ARP&#xff0c;RARP&#xff0c;ICMP&#xff0c;SNMP&#xff0c;DNS等等一系列协议。 注&#xff1a;路由器仅有三层。 分类 网络中传输方式&…

【Unity3D小技巧】Unity3D中使用EventTrigger对3D物体的响应

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 1-1、EventTrigger简介 EventTrigger是Unity中用于处理UI事件的一个组件。它允许我们为UI元…

数据中台系统产品原型RP原型Axure高保真交互原型 源文件分享

在数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一。为了更好地管理和利用这些数据&#xff0c;这边为大家整理了一套数据中台Axure高保真原型。这套原型致力于为企业提供全方位的数据服务&#xff0c;助力企业实现数据驱动的创新发展。 下载及预览地址&#xff1a;h…

Redis数据结构之哈希表

这里的哈希表说的是value的类型是哈希表 一.相关命令 1.hset key field value 一次可以设置多个 返回值是设置成功的个数 注意&#xff0c;哈希表中的键值对&#xff0c;键是唯一的而值可以重复 所以有下面的结果&#xff1a; key中原来已经有了f1&#xff0c;所以再使用hse…

C++:类型转换(static_cast、reinterpret_cast、const_cast、dynamic_cast)、RTTI

C&#xff1a;类型转换&#xff08;static_cast、reinterpret_cast、const_cast、dynamic_cast&#xff09;、RTTI 一、C语言类型转换二、C新增强制类型转换2.1 新增类型转换&#xff1a;static_cast2.2 新增类型转换&#xff1a; reinterpret_cast2.3 新增类型转换&#xff1a…

Spark-广播变量源码分析

一、广播变量使用 源码中给的例子是&#xff1a;org.apache.spark.examples.BroadcastTest 其中我们关心的只有两行代码&#xff0c;即创建广播变量和使用广播变量 //准备测试数据 val arr1 (0 until num).toArray //创建广播变量 val barr1 sc.broadcast(arr1) //使用广播…

python selenium网页操作

一、安装依赖 pip install -U seleniumselenium1.py&#xff1a; from selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Chrome() driver.get("https://www.selenium.dev/selenium/web/web-form.html") title driver.ti…