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

通过命令模拟pod创建

篇文章主要涉及到 kubelet 通过 csi 向运行时发送创建请求,运行时发生了什么?pod 网络又是怎么连通的?

对应的流量图

画板

我们将使用 docker 和 linux Bridge 去完成这个 pod 需求

流程描述

kubelet 通过 CRI 接口调用运行时(如 containerd)创建 pod。该过程分为两步:

创建 Pod Sandbox:运行时先启动一个轻量的 pause 容器。其核心作用是调用 runc 创建并持有一个独立的 Linux Network Namespace,为 Pod 提供网络沙盒环境。

创建业务容器:运行时随后创建业务容器(如 Nginx),并通过指定 network namespace 路径,使其直接加入 pause 容器所在的 Network Namespace,从而实现网络共享。

Pod 沙盒就绪后,运行时调用 CNI 插件配置网络。插件执行如下操作:

创建 veth pair,一端放入容器命名空间内(命名为 eth0),另一端连接至主机网桥(如 br0)

为容器内的 eth0 分配 IP 并设置路由,网关指向网桥。

配置主机 iptables 规则,实现 SNAT 以使 Pod 能访问外部网络,并设置转发规则。

实际操作

创建网桥

这个网桥充当虚拟交换机,所有 pod 流量都通过该设备传递到物理网卡

# 增加一个网卡设备

ip link add name br0 type bridge

# 向网卡设备添加地址

ip addr add 10.0.0.1/24 dev br0

# 设置网卡启动

ip link set dev br0 up

# 验证

ip a

启动 pod 外壳并劫持网络空间

# 创建pod外壳容器

docker run -itd --name my-pod --network=none docker.1ms.run/rancher/mirrored-pause:3.9

# 劫持容器网络命名空间

mkdir -p /var/run/netns

ln -sf /var/run/docker/netns/ce39ddc16db1 /var/run/netns/my-pod

# 验证

ip netns

配置 pod 网络(模拟 CNI 插件)

我们将手动模拟 CNI(bridge)插件的工作:创建 veth pair,连接容器和网桥,分配 IP,设置路由

# 创建一对虚拟以太网设备(veth pair)

# veth-pod:将留在主机默认命名空间的一端

# veth-cont:将留在容器命名空间的一端

ip link add veth-pod type veth peer name veth-cont

# 将veth-cont 放到容器命名空间内部

ip link set veth-cont netns my-pod

# 重命名veth-cont,将其改成符合容器的标准名称eth0

ip netns exec my-pod ip link set veth-cont name eth0

# 启动容器内命名空间网卡

ip netns exec my-pod ip link set eth0 up

# 为容器命名空间内的网卡配置地址要和刚才网关网卡地址一致

ip netns exec my-pod ip addr add 10.0.0.2/24 dev eth0

# 添加到网关的路由

ip netns exec my-pod ip route add default via 10.0.0.1

# 给外面这一端网卡绑定master

ip link set veth-pod master br0

# 启动外面这一端网卡

ip link set veth-pod up

# 验证容器网络命名空间内网络环境

ip netns exec my-pod ip addr show

ip netns exec my-pod route -n

ip netns exec my-pod ping 10.0.0.1

创建业务容器

docker run -itd --name nginx-pod --network container:my-pod nginx:alpine

配置主机网络和 iptables 模拟 kubeporxy

为了让流量能进出 Pod,我们需要配置内核转发和 iptables 规则。

# 开启内核转发功能

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

# 配置SNAT

# 解析:

# 10.244.1.0/24(Pod网段),且要从主机的物理网卡(假设是eth0)出去的流量,将其源IP伪装成主机自己的IP。

# 这样,外部网络回包时才知道送回给哪个主机

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

# 添加一条 iptables DNAT 规则,将端口转发到业务网络命名空间内

# -t nat: 操作 nat 表

# -A PREROUTING: 在数据包刚到达时就进行规则判断

# -p tcp --dport 30080: 匹配协议为 TCP,且目标端口是 30080 的流量

# -j DNAT: 进行目标地址转换(DNAT)

# --to-destination 10.0.0.2:80: 将目标地址改为 Pod 的 IP 和端口

iptables -t nat -D PREROUTING -p tcp --dport 30080 -j DNAT --to-destination 10.0.0.2:80

iptables -t nat -D OUTPUT -d 127.0.0.1/32 -p tcp --dport 30080 -j DNAT --to-destination 10.0.0.2:80

iptables -t nat -I PREROUTING 1 -p tcp --dport 30080 -j DNAT --to-destination 10.0.0.2:80

iptables -t nat -I OUTPUT 1 -p tcp --dport 30080 -j DNAT --to-destination 10.0.0.2:80

# 验证规则

iptables -t nat -L POSTROUTING -n -v

# 验证访问

curl -v http://192.168.1.114:30080

清理环境

# 删除容器

docker stop 4728aeef69f8

docker stop 3041747824eb

docker rm 3041747824eb

docker rm 4728aeef69f8

重启主机

http://www.rkmt.cn/news/131967.html

相关文章:

  • 基于PySide6实现DockWidget内部组件自动换行布局
  • 通达信好公式个股突破
  • 【开题答辩全过程】以 基于Vue的爱心公益募捐平台的设计与实现为例,包含答辩的问题和答案
  • Thinkphp和Laravel教务-评教,教学质量反馈系统 教师评价系统vue
  • 通达信老司机上车
  • 通达信共振指标成功率80%
  • Spring(循环依赖,spring与springboot的区别)
  • 打造三菱PLC自动售货机系统:从搭建到实现
  • Thinkphp和Laravel考研资料信息分享共享交流平台 rm8u3-vue
  • cesium126,240311,Ce for Ue 加载天地图P1-了解天地图的地图API:
  • 通达信随心买
  • Thinkphp和Laravel酒店客房 vue
  • Windows系统文件efswrt.dll丢失或损坏 下载修复方法
  • 【计算机毕业设计案例】基于springboot的云与糖蛋糕购物平台系统的设计与实现烘焙行业线上线下融合、个性化定制服务(程序+文档+讲解+定制)
  • 线性代数:多维世界的变形工具箱
  • 【计算机毕业设计案例】基于springboot的实验室预约系统的设计与实现实验室使用情况设备预约、时段管控、使用记录及安全监管的数字化服务(程序+文档+讲解+定制)
  • 计算机Java毕设实战-基于SpringBoot+Vue实现的前后端分离在线考试系统基于springboot的在线考试系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Java毕设选题推荐:基于javaweb在线考试系统设计与实现基于springboot的在线考试系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 解读一个简单的x64程序的反汇编结果
  • 你是你吃出来的
  • 最新ASNT七大无损检测技巧全解析(RT/UT/PA/MT/PT/ECT/VT实操指南)- 上海欧鑫 ASNT 认证培训
  • 基于深度学习的草莓健康度检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • LLM基础
  • MATLAB电力系统继电保护之自动重合闸
  • CVE-2025-68079:ThemeNectar Salient Shortcodes插件中的跨站脚本漏洞解析
  • OKR 要不要考核?
  • 开题报告反复被打回?虎贲等考 AI:让研究起点精准踩中学术规范
  • 写论文软件哪个好?虎贲等考 AI:毕业论文创作的 “全能通关神器”
  • 9 款 AI 写论文哪个好?实测对比后,这款全流程神器成学术党首选! 毕业论文写作季,AI 写作工具已成学子 “救命稻草”。市面上百度智能云千帆大模型、科大讯
  • win32创建内存映射文件