当前位置: 首页 > article >正文

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

工具介绍

  • 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 1500
        inet 10.72.3.100  netmask 255.255.255.0  broadcast 10.72.3.250
        inet6 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 0
        TX 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 1450
        inet 172.26.25.6  netmask 255.255.255.255  broadcast 172.26.25.6
        inet6 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 0
        TX 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.kler.cn/a/313899.html

相关文章:

  • 【网络工程】计算机硬件概述
  • uni-app中使用 unicloud 云开发平台③
  • Spring框架之适配器模式 (Adapter Pattern)
  • https网站 请求http图片报错:net::ERR_SSL_PROTOCOL_ERROR
  • 重学SpringBoot3-整合 Elasticsearch 8.x (三)使用Repository
  • 【入门篇】A+B Problem——多语言版
  • 功能强大的任务 / 项目管理工具GoodTask for Mac
  • Redis 集群搭建教程
  • leetcode刷题(71-75)
  • ATMEGA328P芯片引脚介绍
  • 如何配置ssh key 到gitlab, 实现git push
  • 京东商品属性的详细api数据解析:颜色、尺寸与材质
  • 《深度学习》PyTorch框架 优化器、激活函数讲解
  • OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)
  • 鸿蒙搭配前端开发:应用端与WEB端交互
  • 安卓数据存储——SQLite
  • VM16安装macOS11
  • 《线性代数》笔记
  • 精选写作技巧!分享4款ai写毕业论文可以写出公式表格的软件
  • windows安装docker、elasticsearch、kibana、cerebro、logstash
  • 西圣、吉玛仕、绿联电容笔好不好用?热门平替电容笔超真实测评!
  • 淘宝npm镜像源更新后,如何正常使用npm命令
  • Apache DolphinScheduler 跨工作流复杂依赖功能详解
  • 不要死磕技术,还是要产品化
  • go语言Map详解
  • 【图表如何自动排序】