当前位置: 首页 > news >正文

k8s 网络插件 flannel calico

一、k8s 网络概述

  • Kubernetes网络是指在Kubernetes集群中不同组件之间进行通信和交互的网络架构,每个容器都有自己的IP地址,这些容器组成了Pod,Pod是Kubernetes调度的最小单元。

  • Pod是Kubernetes中最小的部署单元,每个Pod都有一个唯一的IP地址,Pod内的容器共享该IP地址和网络命名空间,pod间通信可以使用多种技术,如Kubernetes默认的CNI插件:Flannel、Calico 等。

二、flannel 网络插件

flannel 网络通信规则

1、 pod 内部容器之间的通信

  • 在Pod内部,容器之间可以通过共享网络命名空间进行通信。所有容器共享Pod的IP地址和网络命名空间,它们可以使用localhost或Pod的IP地址进行通信。可以通过在Pod的配置文件中指定容器之间的端口映射来定义容器之间的通信方式。

  • 例如,在一个Pod中有两个容器A和B,A需要向B发送HTTP请求。可以在Pod的配置文件中为容器A和容器B分别指定端口号,然后在容器A中使用localhost和容器B的端口号进行通信。容器B在接收到请求后可以返回HTTP响应。

2、同一主机不同 pod 之间的通信

  • Pod A 发送数据到 Pod B

  • ​数据包通过Pod A的veth接口到达宿主节点

  • ​数据包经由节点的虚拟网桥(如cni0)到达Pod B

3、不同主机上 pod 间通信

  • Pod A 发送数据到目标Pod(在另一节点上)

  • ​数据包经过veth接口到达宿主节点

  • ​flanneld对数据包进行VXLAN封装

  • ​封装后的数据包通过底层网络传输到目标节点

  • ​目标节点的flanneld解封装数据包,并将其路由到目标Pod

​优点

  • 结构清晰,易于排查

  • ​对系统资源占用较低

​缺点

  • 数据包在出节点的情况下,需要发生三次的内核与用户空间拷贝,代价较高

三、calico 网络插件

calico 网络通信规则

  • Calico的特点就是把每个宿主机当中一个虚拟路由器建立与物理网络对等的虚拟网络,该模式BGP协议在网络中通告路由信息,巧妙的把二层网络转换成三层路由网络,避免报文被二次封装数据转发效率很高,Pod IP可以在物理网络中全局路由

calico 包含组件:

  • Felix:每个节点都要运行的calico agent,负责配置节点上的路由信息和ACL

  • ETCD:配置中心,主要负责网络元数据一致性,确保Calico网络状态的准确性

  • BGP Client(BIRD):主要负责把Felix配置的路由信息分发到当前Calico网络,确保节点间能够进行三层通信

1、 pod 内部容器之间的通信

  • 在Pod内部,容器之间可以通过共享网络命名空间进行通信。所有容器共享Pod的IP地址和网络命名空间,它们可以使用localhost或Pod的IP地址进行通信。可以通过在Pod的配置文件中指定容器之间的端口映射来定义容器之间的通信方式。

  • 例如,在一个Pod中有两个容器A和B,A需要向B发送HTTP请求。可以在Pod的配置文件中为容器A和容器B分别指定端口号,然后在容器A中使用localhost和容器B的端口号进行通信。容器B在接收到请求后可以返回HTTP响应。

2、同一主机不同 pod 之间的通信

  • Pod A 发送数据到 Pod B(同一节点)

  • ​数据包通过veth接口进入宿主机

  • ​Felix配置的路由规则直接将数据包路由到Pod B

3、不同主机上 pod 间通信

  • Pod A 发送数据到目标Pod(另一节点)

  • ​数据包到达宿主机,BGP通告的路由规则将数据包直接发送到目标节点

  • ​目标节点将数据包路由到目标Pod

优点

  • 高性能:Direct Routing模式避免了封装开销

  • ​网络策略控制:支持复杂的安全策略,提供强大的流量控制能力

  • ​灵活性:支持多种模式,适配不同的网络需求

  • ​稳定性强,效率高

缺点

  • 排查错误困难,安装和管理需要一定经验

参考文档:

K8S网络插件(CNI):Flannel和Calico详细对比 - 墨天轮

k8s CNI组件flannel 和calico 网络原理 - 三木燕 - 博客园

http://www.dtcms.com/a/318419.html

相关文章:

  • 第14届蓝桥杯Scratch选拔赛初级及中级(STEMA)真题2023年1月15日
  • 链式数据结构
  • LangChain4j实战
  • 深入解析系统调试利器:strace 从入门到精通
  • Linux——(16)深入理解程序运行的基石
  • 12. SELinux 加固 Linux 安全
  • react 流式布局(图片宽高都不固定)的方案及思路
  • npm run dev npm run build
  • Activiti7 调用子流程的配置和处理
  • 【Day 17】Linux-SSH远程连接
  • TMS320F2837xD的CLA加速器开发手册
  • mobaxterm怎么复制全局内容
  • ABP VNext + SQL Server Temporal Tables:审计与时序数据管理
  • 串口通信 day48
  • 华清远见25072班C语言学习day3
  • EXCEL-业绩、目标、达成、同比、环比一图呈现
  • Etcd,真的需要集群部署吗?
  • 消防通道占用识别误报率↓79%!陌讯动态融合算法实战优化
  • 模 板 方 法 模 式
  • 人大金仓数据库逻辑备份与恢复命令
  • PostgreSQL报错“maximum number of prepared transactions reached”原因及高效解决方案解析
  • 百货零售行业数字化蓝图整体规划方案(165页PPT)满分可编辑PPT
  • 构建语义搜索引擎:Weaviate的实践与探索
  • XXL-JOB快速入门
  • cygwin+php教程(swoole扩展+redis扩展)
  • 【完整源码+数据集+部署教程】爬行动物异常检测系统源码和数据集:改进yolo11-GhostDynamicConv
  • 一个php 连sqlserver 目标计算机积极拒绝,无法连接问题的解决
  • 第三节 YOLOv5数据集构成
  • 集成显卡 vs 独立显卡:如何通过设备管理器识别你的GPU?
  • Docker 常用命令介绍