欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Kubernetes Pod 网络:CNI 插件与 veth pair 数据路径

发表于:|最后更新:|分类:云原生与微服务|阅读:1784 次
本文标签:KubernetesCNI网络

Kubernetes 本身不实现 Pod 网络,而是通过 CNI(Container Network Interface) 规范将网络配置委托给插件(如 Calico、Cilium、Flannel)。

一、veth pair 的创建与命名空间迁移

bash
# 创建 veth pair
ip link add veth0 type veth peer name veth1
# 将一端移入容器网络命名空间
ip link set veth1 netns <container-ns>

每个 Pod 拥有独立的网络命名空间,插件通过 veth pair 将 Pod 内部网卡与宿主机网桥或路由设备相连,再配合 iptables/eBPF 实现跨节点转发与 NetworkPolicy 隔离。

二、常见故障排查命令

  • kubectl exec 进入 Pod 执行 ip addr 与 ip route
  • 在宿主机使用 nsenter -t <pid> -n 调试命名空间
  • 通过 cilium monitor 或 tcpdump 观察数据包路径