Kubernetes 网络

Kubernetes 网络

一、单主机网络通信

1. Docker 单机网络

  1. Docker网络接口为虚拟接口,内核直接复制数据包转发,不需要经过物理网卡,转发效率高。

  2. 默认创建 docker0 Linux网桥,使用veth pair成对虚拟网卡:一端宿主机网桥,一端容器内部。

  3. docker0配置IP与子网,实现主机和容器互通。

  4. 外部主机访问容器:必须端口映射。

    工具:brctl 来自 bridge‑utils 包。

2. Containerd 单机网络

原理和Docker类似:创建容器时,在宿主机与容器内部生成一对虚拟veth接口实现连通。

二、跨主机网络通信

跨主机:不同节点上的Pod连通。

  • 原生方案:overlay、macvlan
  • 主流CNI插件:Flannel、Calico、Weave

网络模型 Underlay vs Overlay

类型 说明 性能
Underlay 直接使用底层物理网络转发Pod流量,无隧道封装 性能高
Overlay 在宿主机网络之上构建虚拟隧道,数据包封装UDP传输;常用vxlan 有封装开销,性能略低;可利用现有网络,防止交换机MAC表耗尽

主流CNI插件对比

1. Flannel
  1. host‑gw(Underlay)

    • 原理:节点添加静态路由,目标Pod网段下一跳指向目标节点IP;无报文封装
    • 约束:底层网络路由可达;公有云大多不支持
    • 性能:高
  2. VXLAN(Overlay)

    • 原理:跨节点Pod报文封装VXLAN‑UDP包头,宿主机传输,对端解封装

    • 约束:只要求节点之间IP互通,公有云通用

    • 性能:存在封包解包开销

      ⚠️Flannel只负责连通,不提供NetworkPolicy网络策略

2. Calico
  1. BGP模式(Underlay):BGP协议交换Pod路由,无隧道封装,性能最优;需要网络允许BGP发布路由。

  2. IPIP / VXLAN(Overlay):底层不支持BGP时启用隧道封装;适配公有云,有性能损耗。

    ✨核心亮点:原生支持 NetworkPolicy Pod防火墙策略。

3. Weave
  • 默认Overlay UDP隧道,节点间封装Pod流量,自动发现节点。
  • 特性:内置DNS、支持NetworkPolicy、支持加密隧道。
  • 缺点:隧道占用CPU,大规模集群性能较差。
4. Macvlan(Underlay)
  • 原理:宿主机物理网卡虚拟多张网卡,每个Pod拥有独立MAC,直接接入物理局域网。
  • ✅优点:性能极高,延迟低,Pod等同于物理主机。
  • ❌限制:
  1. 父网卡不能开启桥接;

  2. 同一宿主机Macvlan子接口Pod之间不能直接互通;

  3. IP规划复杂,虚拟化环境容易冲突。

    使用场景:Pod需要分配局域网独立IP,被局域网物理设备直接访问。

三、容器网络模型 CNM & CNI

解决:容器运行时与网络插件解耦。

1. CNM(Container Network Model)

  • Docker提出,libnetwork实现。
  • 三大组件:
  1. Sandbox:容器网络栈;Linux Network Namespace实现,包含网卡、路由、DNS。
  2. Endpoint:将Sandbox接入网络;典型实现veth‑pair;一个Endpoint只能属于一个网络、一个Sandbox。
  3. Network:一组Endpoint集合;如Linux Bridge、VLAN。

2. CNI(Container Network Interface)

Google + CoreOS 制定的标准,K8s使用CNI。

两类插件:

  1. CNI Plugin:配置容器网络(网卡、路由)
  2. IPAM Plugin:负责Pod IP地址分配管理。

CNM vs CNI对比

特点 CNM CNI
标准实现 libnetwork cni规范
最小单元 容器 Pod
守护进程依赖 依赖dockerd 不依赖守护进程
跨主机通信 依赖外部KV数据库 自带KV数据库
灵活度 绑定docker 插件可以随意替换

四、Calico网络详解

Calico隧道模式 IPIP vs VXLAN

项目 IPIP隧道 VXLAN隧道
隧道类型 三层IP隧道 二层UDP隧道
传输载体 IP协议号4 UDP 4789端口
二层MAC 不带MAC头 完整二层帧(MAC)
包头开销 较小 包头更大,MTU需要调小
公有云 很多云厂商封禁协议4,无法工作 UDP端口一般放行,兼容性好
广播组播 不支持 支持
Calico配置 ipipMode:Always vxlanMode:Never ipipMode:Never vxlanMode:Always
虚拟网卡 tunl0 vxlan.calico
模式选择
  • IPIP适合:私有机房,允许IP协议4;只需要单播通信,追求更小包头。⚠️公有云大多拦截IPIP协议。
  • VXLAN适合:公有云;底层网络拦截IP协议;需要二层广播;缺点:包头大,MTU调小,性能略低。

Calico工作模式(ipipMode / vxlanMode)

三个取值:Always / Never / CrossSubnet

  1. Always:所有跨节点Pod全部走隧道封装(Overlay)
  2. Never:关闭隧道,BGP原生路由Underlay;路由下一跳指向节点物理网卡,性能最优。
  3. CrossSubnet混合模式:同子网节点通信不走隧道;跨子网节点自动启用隧道封装。

注意:无论隧道开关,Calico始终运行BGP进程,BGP负责同步Pod网段;隧道开关只决定数据包是否封装。

相关推荐
9624561 小时前
一次 Kubernetes 临时存储压力引发的小程序授权雪崩:从 Pod 驱逐到定时任务漏执行
容器·小程序·kubernetes
青瓦梦滋10 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
zhang1338308907510 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻11 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
IpdataCloud12 小时前
批量查IP的API接口怎么选?免费API配额瓶颈与离线库本地批量方案实测
网络·网络协议·tcp/ip
ITyunwei098714 小时前
售后夜间值守怎么落地:从告警到交接的工单系统配置笔记
网络
Smoothcloud润云15 小时前
GPU远程纳管安全吗?最小权限、网络边界与日志审计实战
服务器·网络·人工智能·安全·gpu算力·gpu
ai大模型-探索者15 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
木子欢儿15 小时前
Debian 13 + vsftpd 搭建FTP服务
linux·服务器·前端·网络·debian