k8s CNI Calico 网络模式总结

目录

calico架构图

IPIP模式下的架构图

calico 核心组件

Overlay

网络模式:

Pod IP对外暴露

不对外暴露:

实现对外暴露的方法:

overlay模式下的网络MTU 

Iptables & ipvs

overlay的主要缺点:

Full-mesh

Unoverlay 

Reflect route (Full-mesh + RR)

TOR (禁用Full-mesh)

underlay


calico架构图

下图显示了 Kubernetes、具有网络和网络策略的本地部署所需和可选的 Calico 组件。

IPIP模式下的架构图

calico 核心组件

组件名称功能
Felix
  • 将其主机上的端点路由到 Linux 内核 FIB(转发信息库)中
  • 对路由和 ACL 以及主机上所需的任何其他内容进行编程,以便为该主机上的端点提供所需的连接
BIRD从 Felix 获取路由并分发给网络上的 BGP 对等体,以实现主机间路由。在托管 Felix 代理的每个节点上运行
Confd监视 Calico 数据存储中 BGP 配置和全局默认值(例如 AS 编号、日志记录级别和 IPAM 信息)的更改。
Typha

通过减少每个节点对数据存储的影响来增加规模。作为数据存储和 Felix 实例之间的守护进程运行。

  • 由于一个 Typha 实例可以支持数百个 Felix 实例,因此它大大减少了数据存储上的负载。
  • 由于Typha可以过滤掉与Felix无关的更新,因此也减少了Felix的CPU使用率。在大规模(100+节点)Kubernetes集群中,这是至关重要的,因为API服务器生成的更新数量随着节点数量的增加而变化。

备注: etcd v3 已经针对处理许多客户端进行了优化,因此使用它是多余的,不建议使用。操作员安装始终安装 Typha。

Overlay


网络模式:

  • Vxlan 

  • IPIP  
  • IpCrossubnet

总结:在一些小型网络或简单网络拓扑中,IPIP 可能具有更好的性能和简单性;而在大规模网络或需要多租户支持和网络隔离的环境中,VXLAN 则可能更适合。

Pod IP对外暴露

优点:

  1. 避免出站连接的 SNAT 对于集成现有的更广泛的安全要求可能至关重要。它还可以简化调试和操作日志的理解。
  2.  如果您有专门的工作负载,这意味着需要直接访问某些 pod,而无需通过 Kubernetes 服务或 Kubernetes 入口,那么可路由 pod IP 在操作上可能比使用主机联网 pod 的替代方案更简单。

缺点:

  1. 缺点是 Pod IP 在更广泛的网络中必须是唯一的。例如,如果运行多个集群,您将需要为每个集群中的 Pod 使用不同的 IP 地址范围 (CIDR)。
  2. 当大规模运行时,或者企业对 IP 地址空间存在其他重大需求时,这反过来可能会导致 IP 地址范围耗尽的挑战。

不对外暴露:


优点:

  1. Kubernetes 将使用一种称为 SNAT(源网络地址转换)的技术来更改源 IP地址从 Pod 的 IP 地址到托管 Pod 的节点的 IP 地址。连接上的任何返回数据包都会自动映射回 pod IP 地址。因此,Pod 不知道 SNAT 正在发生,连接的目的地将该节点视为连接的源,而底层更广泛的网络永远不会看到 Pod IP 地址。安全
  2. 只能通过 Kubernetes 服务或 Kubernetes 入口来完成。集群外部的任何内容都无法直接连接到 Pod IP 地址,因为更广泛的网络不知道如何将数据包路由到 Pod IP 地址

实现对外暴露的方法:

  1. 利用BGP网络协议,使用TOR模式(Top-of-Rack)。允许 Calico 与物理网络对等以交换路由。从而形成一个非覆盖网络。 需要进行企业网络配置
  2. CNI插件云服务商提供

overlay模式下的网络MTU 

     IP in IP 使用 20 字节标头,IPv4 VXLAN 使用 50 字节标头,IPv6 VXLAN 使用 70 字节标头,IPv4 WireGuard 使用60 字节标头,IPv6 WireGuard 使用 80 字节标头

Iptables & ipvs

   如果您要扩展超过 1,000 个服务,则值得考虑使用 kube-proxy IPVS 模式潜在的性能改进。Comparing kube-proxy modes: iptables or IPVS?

overlay的主要缺点:

  1. 对性能有轻微影响。封装数据包的过程需要占用少量 CPU,并且数据包中需要额外的字节来对封装进行编码(VXLAN 或 IP-in-IP header),从而减少了可发送的内部数据包的最大大小,从而可以减少内部数据包的大小。意味着需要为相同数量的总数据发送更多数据包。
  2. Pod IP 地址在集群外部不可路由

Full-mesh

    全网格非常适合 100 个或更少节点的中小型部署,但在规模明显更大时,全网格的效率会降低,我们建议使用路由反射器。


 

Unoverlay 


Reflect route (Full-mesh + RR)


备注:需要添加一台新机器,或者是将要设置RR的机器流量摘除,否则会影响之前建立的BGP连接大约2秒的中断时间

TOR (禁用Full-mesh)

 备注: IBGP & EBGP 结合使用,集群大于100个节点以后使用TOR模式可以带来很好的性能


underlay

  1. Macvlan  一块网卡虚拟多个网卡,每个网卡都有独立的mac地址。共享广播域 
  2. macvlan 模式将容器的网络接口直接映射到宿主机上的物理网络接口,容器使用宿主机的 MAC 地址进行通信,可以像物理设备一样在网络中被识别和访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/518913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DXP学习003-PCB编辑器的环境参数及电路板参数相关设置

目录 一,dxp的pcb编辑器环境 1,创建新的PCB设计文档 2,PCB编辑器界面 1)布线工具栏 2)公用工具栏 3)层标签栏 ​☀ 3,PCB设计面板 1)打开pcb设计面板 4,PCB观察…

重温OKHTTP源码

本文基于OkHttp4.12.0源码分析 官方地址 概括 本篇主要是对okhttp开源库的一个详细解析,包含详细的请求流程分析、各大拦截器的解读等。 使用方法 同步请求:创建一个OKHttpClient对象,一个Request对象,然后利用它们创建一个Ca…

免费微信小程序源码分享~搭起来改一下就可以【创业】

【前言】现在很多人都想做微信小程序创业搞钱,但是苦于不会开发或过高的开发成本只能放弃,下面我收集了几套微信小程序的源码供各位有梦想的同学免费使用~ 这些小程序代码都包含了客户端和管理端,你搭建起来就可以开始创业搞钱了~ 下载链接&a…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

4月4日今日预告:printf+scanf+分支循环,if语句,else悬空问题,加油,干干干这篇文章三个小时半了,从愚人节被告知今天就有课程-今日4/3,

今天中午知道要爆肝的C语言的,今天本来作业好多的; 干了,家人们 做一些补充: 一:printf() 参数与占位符对应关系 printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数…

使用docker-tc对host容器进行限流

docker-tc是一个github开源项目,项目地址是https://github.com/lukaszlach/docker-tc。 运行docker-tc docker run -d \ --name docker-tc \ --network host \ --cap-add NET_ADMIN \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var…

通过vite创建项目

一、VUE3官网 Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) 二、通过Vite创建项目 1、在cmd窗口下,全局安装vite //使用国内镜像源 npm config set registryhttps://registry.npmmirror.com//安装最新版vite npm install -g vitelatest Vite | 下一代…

阿里云、腾讯云、华为云优惠券领取攻略

随着云计算技术的日益成熟和普及,越来越多的企业和个人开始选择使用云服务商来满足自己的数据存储、计算和处理需求。阿里云、腾讯云、华为云作为国内领先的云服务商,提供了丰富多样的云产品和服务。而为了吸引更多用户,它们也时常会推出各种…

4.4学习总结

一.线段树概念 一.定义: 线段树是一种二叉搜索树,而二叉搜索树,首先满足二叉树,即每个结点最多有两颗子树,并且是一颗搜索树,我们要知道,线段树的每个结点都存储了一个区间,也可以理解成一个线…

文件系统监视库(watchdog)

Python Watchdog库是一个用于监视文件系统变化的Python第三方库。以下是关于Watchdog库的详细介绍: 功能:Watchdog库能够监控文件和目录的创建、修改、删除和移动等操作。它通过使用底层原生API(如Windows的ReadDirectoryChangesW、Linux 2.6…

Golang学习笔记

Golang学习笔记 安装Golang 来源:linux 安装 golang - 知乎 (zhihu.com) 由于我用的是linux系统,所以本文采用linux的安装方式介绍,如果你使用的是Windows/Mac 也可以看下该文章,或者自己去下列地址进行操作。 Download and in…

react中配置webpack:使用@代表src目录

在vue的项目中可以使用表示src目录,使用该符号表示绝对路径,那么在react中想要使用怎么办呢? 在react中使用表示src目录是需要在webpack中配置的,在核心模块node_modules-》react-scripts-》config-》webpack.config.js中搜索找到…

基于SSM的品牌银饰售卖平台(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的品牌银饰售卖平台(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring …

Windows11下Docker使用记录(一)

Docker使用记录(一) 简单介绍Docker安装Docker 常用命令Docker 可视化Docker 使用GPU可视化rviz、gazebo 在进行ROS项目开发时,如果只有一台Windows电脑,我们可以考虑使用WSL或Docker来搭建ROS环境。在尝试了两种方式后&#xff0…

代码随想录第31天 | 455.分发饼干 、376. 摆动序列、53. 最大子序和

一、前言 参考文献:代码随想录 今天的内容是贪心算法,这个算法分为两个极端,一个极端是很简单,靠常识就可以解出来,另外一个是,你怎么想也想不出来,只能看题解的那种。 and 对第一天和第二天…

Spring源码解析上

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

树的基本概念与二叉树

文章目录 树的基本概念与二叉树一、树的概念和结构1. 树的概念2. 树的相关概念 二、树的存储1. 左孩子右兄弟表示法2. 双亲表示法 三、二叉树1. 特殊的二叉树1.1 满二叉树1.2 完全二叉树 树的基本概念与二叉树 一、树的概念和结构 1. 树的概念 树是一种非线性的数据结构,它是…

Liunx进程信号

进程信号 进程信号什么是信号liunx信号种类 前后台进程前后台进程的概念 进程信号的产生键盘产生 阻塞信号信号的捕捉用户态和内核态 信号的捕捉函数 进程信号 什么是信号 信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知…

计算机专业,不擅长打代码,考研该怎么选择?

考研其实和你的代码能力关系不大 所以在选学校以前可以看看有哪些学校复试是要求上机撸代码的,可能会要求比较严 初试真的不用担心代码问题,我也是基本零编程能力就开始备考考研的... 本人双非科班出身备考408成功上岸,在这里也想给想考40…

先登杯·14天创作挑战营·第④期~ 等你来战!

文章目录 ⭐️ 活动介绍⭐️ 活动详情⭐️ 活动奖品⭐️ 活动流程​⭐️ 评审规则⭐️ 报名&投稿注意事项⭐️ 活动组织 ​ 活动报名入口:https://bbs.csdn.net/topics/618374514 本次活动与官方活动及其他博主的创作型活动并不冲突! ​ ​ ⭐️…