github编辑

9.7 容器网络高级特性

深入探讨容器网络的核心机制、Overlay 网络、CNI 插件生态、容器 DNS 解析、网络策略等高级特性,为生产级别的网络架构打下坚实基础。

9.7.1 Overlay 网络原理与配置

Overlay 网络在现有网络基础上建立虚拟网络,允许容器跨宿主机通信。它是 Kubernetes 和 Swarm 模式的基础。

Overlay 网络工作原理

Overlay 网络通过隧道封装技术(通常是 VXLAN)将容器网络流量封装在宿主机物理网络的 UDP 数据包中传输。

容器 A (192.168.0.2)

veth 对

br-net (网桥)

Docker 引擎 (VXLAN 封装)

物理网络 (172.16.0.0/24)

Docker 引擎 (VXLAN 解封装)

br-net (网桥)

veth 对

容器 B (192.168.0.3,不同宿主机)

创建和使用 Overlay 网络

Docker Swarm 模式下的 Overlay 网络:

单机 Overlay 网络模拟(Linux 容器):

Overlay 网络性能优化

9.7.2 CNI 插件生态概览

容器网络接口(CNI)是容器编排平台(尤其是 Kubernetes)的标准化网络接口。不同的 CNI 插件提供不同的网络能力。

主流 CNI 插件对比

Calico - 基于 BGP 的网络

Calico 使用 BGP 协议进行路由,支持网络策略和 eBPF 加速。

Flannel - 简单可靠的 Overlay

Flannel 提供简单的 overlay 网络实现,适合小到中等规模的集群。

Cilium - eBPF 驱动的先进网络

Cilium 使用 eBPF 在内核级别实现网络策略和可观测性,性能优异。

Weave - 跨主机网络通信

Weave 提供简单的跨主机通信,支持加密和多播。

CNI 插件对比表:

特性
Calico
Flannel
Cilium
Weave

路由方式

BGP

VXLAN/UDP

eBPF

VxLAN

网络策略

✓ (L3-L7)

性能

⭐⭐⭐⭐

⭐⭐⭐

⭐⭐⭐⭐⭐

⭐⭐⭐

可观测性

⭐⭐⭐⭐⭐

学习曲线

生产就绪

9.7.3 容器 DNS 解析机制

Docker 内置 DNS 服务器,但 DNS 解析涉及多个层面的配置。

DNS 解析流程

配置容器 DNS

在运行时指定 DNS:

Docker Compose DNS 配置:

Docker 守护进程级别配置:

自定义服务发现(Service Discovery)

使用 Docker 内建 DNS 的服务发现:

Compose 服务名自动发现:

DNS 性能优化

9.7.4 网络策略(NetworkPolicy)实践

网络策略定义了容器间的流量控制规则,是微服务架构中的安全基础。

基本网络策略

默认拒绝所有入站流量的策略:

允许特定来源的入站流量:

允许出站流量到数据库:

微服务网络策略示例

使用 Calico/Cilium 的高级网络策略

L7 应用层策略(仅 Cilium 支持):

9.7.5 跨主机容器通信方案对比

方案对比表

方案
隔离性
性能
复杂度
适用场景

主机网络

⭐⭐⭐⭐⭐

高性能,单主机

Bridge + Host Port

⭐⭐⭐⭐

小规模集群

Overlay (VXLAN)

⭐⭐⭐

跨域通信

BGP (Calico)

⭐⭐⭐⭐

大规模集群

eBPF (Cilium)

⭐⭐⭐⭐⭐

高性能大集群

选择建议

9.7.6 网络故障排查

常见网络问题诊断:

最后更新于