news 2026/5/1 9:50:28

k8s(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
k8s(二)

文章目录

  • 前言
  • 一、K8S 中 Pod 网络通信的三种情况
    • 1.1 同一nod节点中
    • 1.2 同一pod中的容器
    • 1.3 不同node节点上
  • 二、Flannel方案
    • 2.1 Flannel UDP 模式通信流程
    • 2.2 Flannel VXLAN 模式通信流程
    • 2.3 Flannel Host-gw 模式通信流程
  • 三、calico
  • 四、Flannel与calico的区别
  • 总结

前言

本文主要讲解k8s集群中pod网络通讯原理

一、K8S 中 Pod 网络通信的三种情况

1.1 同一nod节点中


同一node的每个pod都有自己独立的ip并且在同一网段,当pod1尝试访问pod2时,访问会通过网卡docker0进行转发到pod2,最终实现通讯。

1.2 同一pod中的容器

在前一篇博客我们了解到了pod中可以有很多个容器,而同一个pod中的所有容器都在同一个命名空间中,因此就相当于两个容器在同一个虚拟主机上,可以直接通过本地ip进行访问。

1.3 不同node节点上

这种相当于跨主机进行通信,由于外部ip互相不认识,因此这种通讯不能直接访问,跨主机方式进行通讯有两种方案,一种是Flannel另一种是calico。

二、Flannel方案

flannel方案又分为三种模式

2.1 Flannel UDP 模式通信流程


举例:container1(pod1)访问container2(pod2),pod1会将自己的ip与要通讯的目标(pod2)ip进行打包,发给网关,网关(cni)通过网桥发送给node1节点的网卡(eth0),网卡中的Flannel0再将网卡的ip与对端node2的网卡ip打包进入数据包中形成UDP包,然后通过宿主机网卡eth0将数据帧发送给对端node节点,node节点收到包后层层解包,先是拆出node2的ip,发现是找自己的就会继续拆包,拆出pod2的ip,然后会将包转发给pod2,最后pod2发现是找自己的就会拆数据包,提取里面的数据,实现互通。

2.2 Flannel VXLAN 模式通信流程


原理:podA1到podB2,pod1将自己的ip与对端pod2的ip和数据打包,形成数据包发送给网卡,网卡通过虚拟网桥cni将数据帧发送给Flannel1,flannel1给原始数据包加外层封装再发给node1的网卡,nod1的网卡ens160将自己的网卡ip与对端node2的网卡ip写入数据包中,同时将vxlan头部也加入到数据帧中,最后通过物理网卡ens160和vxlan隧道将数据帧快速的发送给对端网卡ens160,对端收到后,进行解包,发现是找自己的就会继续解包,发现要找podB2,就会将数据包转发给podB2。
特点:
1、转发速度快,通过vxlan进行数据帧转发。(与UDP的区别)
2、需要进行打包、解包

2.3 Flannel Host-gw 模式通信流程

原理:PodA1(10.244.1.2,Node A 的 Pod 子网)要访问 PodB2(10.244.4.3,Node B 的 Pod 子网),数据包从 Pod 的eth0发出,通过veth转发到 Node A 的cni0网桥。cni0发现目标 IP(10.244.4.3)属于 “10.244.4.0/24” 子网,查 Node A 的路由表,找到一条路径通往pod2,Node A 的ens160(物理网卡)直接将数据包发送到 Node B 的ens160,Node B 的ens160收到数据包后,查自己的路由表,发现 “10.244.4.0/24” 是自己的 Pod 子网,于是将数据包转发到 Node B 的cni0网桥,cni0将数据包通过veth转发到 PodB2 的eth0,PodB2 收到数据。
核心特点
1、无封装开销,性能最高(因为是纯路由转发);
2、Node 必须处于同一个二层网络(不能跨网段转发)。

三、calico


举例:pod1ip:10.244.1.2 pod2ip:10.244.2.3
原理:pod1访问pod2,pod1位于node1节点中,pod2位于node2节点中,pod将数据写入数据包发送给pod1的网卡eth0,eth0再通过网桥将数据包发送给node1节点的网卡,node1查找路由规则,BGP为node1找出转发的最佳路径,node1通过自己的物理网卡将数据包发送到对端的node2网卡,node2查找路由表发现有pod2后,将包发给pod2。

Calico 的核心思想
把每一台 Node 当成一台路由器
不使用隧道
不修改原始数据包
通过 BGP 同步路由表
直接三层转发

四、Flannel与calico的区别

总结

本文主要讲解k8s集群中pod网络通讯原理,谢谢观看。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:04:05

5分钟极速上手:XUnity游戏翻译器完整使用手册

5分钟极速上手:XUnity游戏翻译器完整使用手册 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的语言障碍而烦恼吗?这款强大的游戏翻译工具能够让你无障碍畅玩全球热…

作者头像 李华
网站建设 2026/5/1 5:05:08

DLSS Swapper完全攻略:释放显卡隐藏性能的智能方案

DLSS Swapper完全攻略:释放显卡隐藏性能的智能方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏卡顿而烦恼吗?🤔 每次看到别人流畅运行最新大作,而自己的RT…

作者头像 李华
网站建设 2026/5/1 0:04:35

终极Python抢票脚本:3步搞定热门演唱会门票

终极Python抢票脚本:3步搞定热门演唱会门票 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在热门演唱会门票秒光的今天,手动刷新已经无法应对激烈的抢票竞争。当周杰伦、…

作者头像 李华
网站建设 2026/5/1 5:00:22

TranslucentTB启动问题终极解决手册:3分钟快速修复VCLibs缺失错误

TranslucentTB启动问题终极解决手册:3分钟快速修复VCLibs缺失错误 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB 当您满怀期待地想要享受透明任务栏带来的视觉盛宴,却遭遇"Microsoft.VCLibs…

作者头像 李华
网站建设 2026/5/1 5:07:35

Windows右键菜单终极管理指南:ContextMenuManager完整解析

Windows右键菜单终极管理指南:ContextMenuManager完整解析 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单的混乱问题困扰着无数用户…

作者头像 李华
网站建设 2026/5/1 5:07:11

如何在15分钟内让游戏画质实现质的飞跃?

如何在15分钟内让游戏画质实现质的飞跃? 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经在游戏中遭遇这样的困扰:明明配置足够,画面却总是模糊不清?看到别人分…

作者头像 李华