深入了解 Flannel(2):vxlan模式下的跨主机pod通讯

立山  论坛元老 | 2024-10-21 10:45:36 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1868|帖子 1868|积分 5604

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. Flannel 的 VXLAN 配置

配置步调

要利用 VXLAN 后端,通常需要以下步调:

  • 安装 Flannel

    • 通过 kubectl 应用 Flannel 的 YAML 文件。比方,可以利用以下下令来安装:
      1. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel.yml
      复制代码

  • 配置网络

    • 在 Flannel 的 ConfigMap 中定义网络配置。网络配置通常包括网络范围(CIDR)和后端范例。以下是一个示例 ConfigMap,定义了利用 VXLAN 的网络配置:
    1. apiVersion: v1
    2. kind: ConfigMap
    3. metadata:
    4.   name: flannel-cfg
    5.   namespace: kube-system
    6. data:
    7.   net-conf.json: |
    8.     {
    9.       "Network": "10.244.0.0/16",
    10.       "Backend": {
    11.         "Type": "vxlan"
    12.       }
    13.     }
    复制代码
      

    • Network 字段定义了 Pod 利用的 IP 所在范围,Backend 字段指定了利用的后端范例(这里是 vxlan)。

  • 启动 Flannel

    • Flannel 启动后,它会根据配置文件创建网络接口,并分配 IP 所在。

2. Flannel 利用 VXLAN 的通讯原理

步调 1: Pod 创建与 IP 分配



  • 当一个 Pod 被创建时,Flannel 从配置的网络范围(如 10.244.0.0/16)中分配一个唯一的 IP 所在,并将其与 Pod 关联。
步调 2: 数据包生成



  • 假设 Pod A(位于主机 1)需要与 Pod B(位于主机 2)通讯,Pod A 会生成一个目标 IP 为 Pod B 的数据包。
步调 3: 数据包发送到宿主主机



  • Pod A 通过宿主主机的网络栈发送数据包。此时数据包的目标 IP 是 Pod B 的 IP 所在。
步调 4: 数据包封装



  • 在主机 1,Flannel 拦截到这个数据包。Flannel 将数据包封装成 VXLAN 数据包,这个过程包括以下几个步调:

    • 添加 VXLAN 头:包含 VXLAN ID、源 IP 和目标 IP。
    • 添加 UDP 头:将 VXLAN 数据包包装在 UDP 数据包中。
    • 生成终极的数据包,将其发送到主机 2。

步调 5: 发送封装后的数据包



  • 封装后的数据包通过主机 1 的网络接口发送到物理网络。这个数据包在网络中以 UDP 数据包的情势举行传输。
步调 6: 主机 2 吸收数据包



  • 主机 2 吸收到这个封装的 VXLAN 数据包。Flannel 在主机 2 中运行,负责吸收并处理这个数据包。
步调 7: 数据包解封装



  • Flannel 拦截到 VXLAN 数据包,并举行解封装:

    • 移除 UDP 头和 VXLAN 头,恢复原始数据包。

步调 8: 数据包转发到目标 Pod



  • 解封装后的数据包被转发到目标 Pod B,完成跨主机的通讯。
3. Flannel 在各个环节的作用



  • 配置管理:Flannel 通过 ConfigMap 管理网络配置,包括 IP 所在范围和后端范例。
  • IP 所在分配:Flannel 负责为每个 Pod 分配唯一的 IP 所在,确保网络中的所在不冲突。
  • 数据包封装与解封装

    • 在主机 1 上,Flannel 拦截 Pod A 的数据包并将其封装为 VXLAN 数据包。
    • 在主机 2 上,Flannel 吸收并解封装数据包,将其转发到目标 Pod B。

  • 路由管理:Flannel 管理数据包的路由信息,确保数据包能够精确到达目标 Pod。
总结

利用 VXLAN 后端时,Flannel 通过封装和解封装机制实现了不同主机上 Pod 之间的通讯。配置 VXLAN 后端涉及定义网络范围和选择后端范例,Flannel 在数据包的生成、封装、解封装和转发等各个环节中发挥了重要作用。这使得 Flannel 成为 Kubernetes 中一种灵活且易于利用的网络解决方案。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表