Flannel 支持的后端

Flannel 是一个为 Kubernetes 设计的容器网络解决方案,支持多种后端(backend)来处理节点间的数据包转发。根据官方文档和其他可靠来源,以下是 Flannel 支持的后端类型及其说明:

  1. VXLAN(推荐)

    • 描述:使用内核中的 VXLAN(Virtual Extensible LAN)来封装数据包,创建覆盖网络(overlay network)。
    • 特点
      • 默认后端,性能较好,广泛支持。
      • 使用 UDP 端口(默认 8472)传输封装数据包。
      • 支持 IPv4 和 IPv6 双栈。
      • 可配置参数:
        • VNI(VXLAN Identifier):默认值为 1,Windows 上需 ≥ 4096。
        • Port:用于发送封装数据包的 UDP 端口。
        • GBP(Group Based Policy):布尔值,默认 false。
    • 适用场景:适用于大多数 Kubernetes 集群,尤其是在需要跨子网通信的场景。
    • 注意事项:需要确保防火墙允许相关 UDP 端口(如 8472)。
  2. host-gw

    • 描述:通过直接更新主机的路由表来创建主机间的直接路由(direct routing)。
    • 特点
      • 性能优于 VXLAN,因为不涉及数据包封装。
      • 仅适用于同一二层(Layer 2)网络中的主机(需要直接 L2 连接)。
      • 不适合云环境,因为云提供商通常不支持直接的二层网络连接。
      • 支持 IPv4 和 IPv6 双栈。
    • 适用场景:适合有经验的用户在本地或裸金属环境中追求高性能。
    • 注意事项:需要主机间直接的二层网络连接。
  3. UDP

    • 描述:使用用户空间的 UDP 封装,通过 TUN 设备将 IP 数据包封装在 UDP 数据包中。
    • 特点
      • 仅推荐用于调试或非常旧的内核(不支持 VXLAN 的场景)。
      • 默认端口为 8285。
      • 性能较差,因为封装和解封装在用户空间进行。
    • 适用场景:调试或老旧系统(不支持 VXLAN 的内核)。
    • 注意事项 :某些架构(如 ARM64)可能不支持 UDP 后端。
  4. WireGuard

    • 描述:使用内核中的 WireGuard 进行数据包封装和加密,创建安全的 VPN 隧道。
    • 特点
      • 提供加密通信,适合需要安全性的场景。
      • 可配置参数:
        • PSK(Pre-Shared Key):可选,用于加密的预共享密钥。
        • ListenPort:IPv4 的监听端口,默认 51820。
        • ListenPortV6:IPv6 的监听端口,默认 51821。
        • MTU:数据包的最大传输单元,默认为外部接口的 MTU。
        • Mode:支持 separate(IPv4 和 IPv6 使用单独隧道,默认)或 auto(单一隧道支持双栈)。
      • 支持 IPv4 和 IPv6 双栈。
    • 适用场景:需要加密通信的 Kubernetes 集群。
    • 注意事项 :需要确保所有节点安装了 WireGuard 内核模块。
  5. AWS-VPC(实验性,未受支持)

    • 描述:在 AWS VPC 环境中通过操作 VPC 路由表来实现路由。
    • 特点
      • 不创建独立的 Flannel 接口,直接利用 AWS VPC 的路由功能。
      • 需要 AWS 访问密钥(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY)或节点 IAM 角色权限。
      • 路由表条目限制为 50 条。
    • 适用场景:运行在 AWS VPC 环境中的 Kubernetes 集群。
    • 注意事项 :实验性功能,需谨慎使用。
  6. GCE(实验性,未受支持)

    • 描述:在 Google Compute Engine(GCE)环境中通过操作 IP 路由表实现高性能路由。
    • 特点
      • 不使用封装,直接操作路由表。
      • 需要实例启用 IP 转发并具有读写计算权限。
    • 适用场景:运行在 GCE 环境中的 Kubernetes 集群。
    • 注意事项 :实验性功能,需谨慎使用。
  7. AliVPC(实验性,未受支持)

    • 描述:在阿里云 VPC 环境中通过操作 VPC 路由表实现路由。
    • 特点
      • 不创建独立的 Flannel 接口。
      • 需要访问密钥(AccessKeyIDAccessKeySecret)或环境变量配置。
      • 路由表条目限制为 50 条。
    • 适用场景:运行在阿里云 VPC 环境中的 Kubernetes 集群。
    • 注意事项 :实验性功能,需谨慎使用。
  8. Alloc

    • 描述:仅进行子网分配,不负责数据包转发。
    • 特点
      • 通常与其他后端结合使用,本身不提供网络通信功能。
    • 适用场景:特殊场景下仅需子网分配时使用。
    • 注意事项:不常用,通常需要与其他机制配合。
  9. IPIP(实验性,未受支持)

    • 描述:使用 IP-in-IP 隧道封装数据包。
    • 特点
      • 类似 VXLAN,但使用较老的 IPIP 协议。
      • 性能和兼容性不如 VXLAN。
    • 适用场景:特定场景下需要兼容旧系统。
    • 注意事项 :实验性功能,建议避免使用。
  10. IPSec(已废弃)

    • 描述:早期版本支持的加密后端,使用 IPSec 协议。
    • 特点
      • 已被 WireGuard 替代,K3s 自 2022-12 版本(v1.26.0+k3s1 等)起不再包含相关二进制文件。
    • 适用场景:无(已废弃)。
    • 注意事项 :建议迁移到 wireguard-native 后端。

配置注意事项

  • 后端选择不可动态更改 :一旦选择某个后端(如 VXLAN),不能在运行时直接更改,必须停止所有工作负载并重启 Flannel 守护进程(flanneld)。
  • 防火墙配置 :某些后端(如 VXLAN、UDP、WireGuard)需要开放特定的 UDP 端口(如 8472、8285、51820/51821),确保防火墙规则允许这些流量。
  • 双栈支持 :VXLAN、host-gw 和 WireGuard 支持 IPv4 和 IPv6 双栈模式,需在配置中启用 EnableIPv6 并设置 IPv6Network
  • 性能对比
    • host-gw 提供最佳性能,但受限于二层网络。
    • VXLAN 是默认选择,平衡性能和兼容性。
    • UDP 性能较差,仅用于调试。
    • WireGuard 提供加密,但需要额外模块支持。
  • 云环境限制:AWS-VPC、GCE 和 AliVPC 仅适用于特定云平台,且为实验性功能。

配置示例

以下是一个配置 VXLAN 后端的 Flannel 配置文件(net-conf.json)示例:

json 复制代码
{
  "Network": "10.244.0.0/16",
  "Backend": {
    "Type": "vxlan",
    "VNI": 1,
    "Port": 8472
  }
}

如果需要使用 WireGuard 后端:

json 复制代码
{
  "Network": "10.244.0.0/16",
  "Backend": {
    "Type": "wireguard",
    "ListenPort": 51820,
    "PSK": "your-pre-shared-key"
  }
}

总结

Flannel 支持的后端包括 VXLAN (推荐)、host-gw (高性能但受限于二层网络)、UDP (仅用于调试)、WireGuard (加密通信)、AWS-VPCGCEAliVPC (实验性)、AllocIPIP (实验性)。此外,IPSec 已废弃。选择后端时需根据网络环境、性能需求和安全性要求进行权衡。

相关推荐
魔法白糖34 分钟前
怎么在window上打开ubuntu虚拟机?
linux·ubuntu
编码小笨猪34 分钟前
一文详谈Linux中的时间管理和定时器编程
linux·服务器
82782093736 分钟前
CentOS-stream-9 Zabbix的安装与配置
linux·centos·zabbix
m0_694845571 小时前
服务器如何配置防火墙管理端口访问?
linux·运维·服务器·前端
共享家95272 小时前
Linux进程
linux
xcs194052 小时前
运维 pgsql 安装完后某次启动不了
linux·运维·服务器
辣个蓝人QEX2 小时前
【ZYNQ Linux开发】使用 boot.scr 启动 Linux 报错 Bad Linux ARM64 Image magic! 调试过程记录
linux·运维·fpga开发·zynq·petalinux·zynq mpsoc
Brandon汐3 小时前
Linux中的shell脚本
linux·运维·服务器
欲盖弥彰13143 小时前
工控机安装lubuntu系统
linux·工控机·lubuntu