Kube-OVN 混合网络场景最佳实践

在近期的技术分享中,灵雀云技术专家刘梦馨与现场网络专家深入探讨了Kube-OVN在混合网络场景下的最佳实践。本次分享详细介绍了Overlay和Underlay网络的特点及其在实际应用中的混用场景,并展示了Kube-OVN项目如何通过自身的解决方案应对混合网络的挑战。以下是本次分享的详细内容回顾。

01Overlay 与Underlay 网络为什么要混用     

Overlay 网络

图片

Overlay网络是一种在Kubernetes中通过隧道技术实现的网络类型,允许容器拥有独立于宿主机的IP地址。这种网络提供了隔离性和灵活性,适用于需要安全隔离和自定义网络配置的场景。主流的K8s网络解决方案如Flannel、Calico和Cilium等都支持Overlay网络。

优点

  • 网络依赖低:通过隧道封装技术,容器网络与宿主机网络逻辑隔离,不依赖底层网络。

  • 配置灵活:可以自由配置网关、DNS等,易于管理。

  • 功能可拓展性:软件封装的网络,易于扩展。

  • 安全隔离:容器IP不直接暴露,增强安全性。

缺点

  • 额外的性能开销:封装和解封装操作增加延迟。

  • 运维复杂度增加:涉及两层网络,问题排查复杂。

  • 与底层网络的互通问题:需要额外配置实现互通。

Underlay 网络

图片

Underlay网络是一种逻辑上更简单的网络架构,通过直接桥接物理网卡,使容器网络与底层物理网络相连。容器的IP和MAC地址直接映射到物理网络,避免了复杂的封装和软件定义规则,提供了一种更直接和易于管理的网络解决方案。

优点

  • 性能好:直接使用物理网络,减少封装开销。

  • 天然与底层网络互通:无需额外配置即可实现互通。

  • 运维类似传统网络:易于传统网络管理员理解和管理。

缺点

  • 对底层网络有依赖:管理成本高,地址空间占用大。

  • 变更复杂:网络变更需要底层网络支持。

  • 功能可拓展性小:受限于物理网络。

  • 混部场景:Overlay与Underlay混部

在Kubernetes环境中,根据应用的具体需求,往往需要同时采用Overlay和Underlay网络。对于不需要高性能但需要隔离的内部服务,Overlay网络提供了灵活性和安全性;而对于需要高性能和直接外部访问的应用,如数据库和中间件,Underlay网络则更为合适。这种混合网络模式正成为越来越多复杂应用场景下的部署趋势。

02混合网络存在的问题                               

Multus

Multus是由英特尔开源并由Kubernetes社区托管的多网络平面管理工具。它扩展了Kubernetes的CNI,允许Pod配置多块网卡和多个IP地址,尽管K8s最初设计时只支持单网卡。

图片

Multus的两种模式

  • 多网卡模式:Pod可以配置多个CNI插件,实现多网卡。主网卡(如eth0)提供主要网络连接,而附属网卡(如net0, net1)通过CRD添加,支持额外的网络连接需求。

  • 单网卡模式:Pod只有一块网卡,但可以选择使用不同的CNI插件来管理其网络连接,尽管只有一个物理网卡,但可以利用不同的网络策略和配置。

1、多网卡

图片

优点

  • 网络需求满足:每个容器都可以访问Overlay和Underlay网络。

  • 实现互通:每个Pod的两块网卡使得业务能够同时访问Overlay和Underlay网络,实现网络互通。

缺点

  • 地址资源浪费:无论业务是否需要,每个Pod都会被分配两块网卡和两个地址,导致地址资源的浪费。

  • 服务发现和安全策略问题:K8s的网络相关概念如Service、DNS域名、Network Policy等只针对第一块网卡,导致服务发现和安全策略存在隐患。

  • 额外监控管理复杂度:需要在两个网卡上进行监控,增加了管理的复杂性。

  • 应用感知问题:应用可能需要感知多网卡的存在,并进行相应的调整,增加了应用层面的复杂性。

多网卡相关辅助项目

在Kubernetes社区中,为了应对多网卡环境带来的挑战,各个组织正在推进一些辅助项目。其中包括一个名为multi-networkpolicy的API,这是一个早期的API,专门设计用于处理多网卡情况下的网络策略,提供了通过IP table和TC(Traffic Control)的样例实现。此外,还有一个多网卡服务发现项目,虽然目前维护不活跃,但其基础功能仍然可以满足基本需求。对于已经部署多网卡并需要网络策略或服务发现功能的用户,这些项目提供了可行的解决方案。

例如:

  • multi-networkpolicy API:

    https://github.com/k8snetworkplumbingwg/multi-networkpolicy

  • multi-networkpolicy-iptables

  • multi-networkpolicy-tc

  • multi-service:

    https://github.com/k8snetworkplumbingwg/multus-service-archived

2、单网卡

图片

优点

  • 应用无感知:Pod只有一块网卡,简化了网络配置,应用不需要感知复杂的网络设置。

  • 兼容性:兼容原生的Service和NetworkPolicy,无需额外配置。

  • 资源节省:节约Underlay的IP资源,简化了资源管理。

缺点

  • 互通性问题:Underlay和Overlay之间的Pod无法直接互通,需要额外配置。

  • 管理复杂度:需要管理多个网络插件,增加了复杂性。

03Kube-OVN的解决方案                           

Kube-OVN简介

Kube-OVN是灵雀云在2019年开源的网络项目,利用成熟的OVS(Open vSwitch)技术作为数据平面的基础,并结合Kubernetes原生设计,针对企业级容器网络的需求开发。该项目通过整合OVN(Open Virtual Network)的逻辑路由器和逻辑交换机,构建了一个灵活的SDN网络,支持Overlay和Underlay网络的集成。

Kube-OVN解决方案

Kube-OVN的解决方案通过以下方式实现Overlay和Underlay网络的互通:

  • 网络实现:Overlay网络通过逻辑交换机与逻辑路由器相连,形成SDN网络;Underlay网络则通过逻辑交换机与物理交换机桥接,实现数据平面的直接传输。

  • 互通策略:通过在Underlay网络中创建逻辑端口并连接到Overlay的逻辑路由器,实现网络互通。同时,在逻辑路由器上配置路由规则,区分访问Overlay和非Overlay网络的流量。

  • 默认网关设置:在Underlay网络的Pod中,设置默认网关指向与逻辑路由器相连的端口,确保流量正确路由。

  • 简化配置:避免了复杂的NAT和额外路由配置,通过逻辑路由器的规则实现直接互通。

图片

Kube-OVN方案优点

  • 应用无感知,兼容原生Service和NetworkPolicy。

  • 节约IP资源,一套网络插件同时实现Overlay和Underlay。

  • 实现了Overlay和Underlay的互通,避免了额外的NAT和路由配置。

- END - 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

web服务器dns服务器配置服务

1.搭建一个nfs服务器,客户端可以从该服务器的/share目录上传并下载文件 server服务器: 创建 /share目录,并且编辑/etc/exports文件 更改目录权限为755: 755权限码的含义是: 文件所有者(第一位数字7&…

永劫无间手游攻略:快速升级攻略大全!云手机加速辅助教程!

在永劫无间这款竞技游戏中,快速提升等级和通行证是每个玩家追求的目标。通过合理的模式选择、任务完成以及使用高效的辅助工具,玩家可以更快速地达到这一目标。以下是详细的升级策略和辅助工具介绍。 1. 天选之人模式: 天选之人模式是永劫无间…

算法导论 总结索引 | 第五部分 第二十章:van Emde Boas树

1、一些支持优先队列操作的 数据结构,如第6章的二叉堆、第13章的红黑树 和 第19章的斐波那契堆。在这几种数据结构中, 不论是最好情况 还是 摊还情况, 至少有一项重要操作 只需要 O(n lgn) 时间 由于这些数据结构 都是基于关键字比较 决定的,因此, 8.1节中的下界 Ω…

【React】详解样式控制:从基础到进阶应用的全面指南

文章目录 一、内联样式1. 什么是内联样式?2. 内联样式的定义3. 基本示例4. 动态内联样式 二、CSS模块1. 什么是CSS模块?2. CSS模块的定义3. 基本示例4. 动态应用样式 三、CSS-in-JS1. 什么是CSS-in-JS?2. styled-components的定义3. 基本示例…

【leetcode 详解】生成特殊数字的最少操作【中等】(C++思路精析)

题目见下: 测试数据: 解题思路笔记: 最初拿到这道题是很蒙的,联想不到什么数据结构的模型(肯定是笔者积累太少了),甚至惯性地想怎么实现“删除数字”的操作:在原字符串中抽出一个字符然后将剩…

面试 SQL整理 常见的SQL面试题:大厂经典60题(一)

目录 SQL基础知识整理: 数据库基础知识 为什么要使用数据库 数据保存在内存 数据保存在文件 数据保存在数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别&…

ElasticSearch(五)— 文本分析与分词

一、文本分析 文本分析( analysis )是在文档被发送并加入倒排索引之前,Elasticsearch 在其主体上进行的操作。在文档被加入索引之前,Elasticsearch 让每个被分析字段经过一系列的处理步骤。 字符过滤–使用字符过滤器转变字符。文本切分为分词—将文本…

JAVA同城圈子达人交友系统源码支持微信小程序+公众号+H5+APP

🌈 同城圈子达人交友系统,遇见志同道合的TA! 🎉 开篇:告别孤单,同城圈子等你来探索! 在这个快节奏的城市生活中,你是否常常感到孤独,渴望找到一群志同道合的朋友&#…

2024年铜川宜君半程马拉松,暴晒+爬坡152安全完赛

1、赛事背景 2024年7月21日,我参加了2024年铜川宜君半程马拉松赛,7月举办的赛事很少,全国都算温度比较高的,虽然宜君是一个山城,还是会担心气温会高。 临开赛1、2周,陕西区域降水比较多,赛前一…

如何实现ECharts图表根据屏幕大小自适应?

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-ECharts自适应 目录 前言 1920*1080分辨率示图 8184*2432分辨率示图 以vue3ts开发为例 (…

C++第十弹 ---- vector的介绍及使用

目录 前言vector的介绍及使用1. vector的使用1.1 vector的定义1.2 iterator的使用1.3 vector空间增长问题1.4 vector增删查改 2. vector迭代器失效问题(重点) 总结 前言 本文介绍了C中的vector数据结构及其使用方法。 更多好文, 持续关注 ~ 酷酷学!!! 正文开始 vector的介绍…

面试场景题系列--(2)短 URL 生成器设计:百亿短 URL 怎样做到无冲突?--xunznux

文章目录 面试场景题:短 URL 生成器设计:百亿短 URL 怎样做到无冲突?1. 需求分析2. 短链接生成算法2.1 自增法2.2 散列函数法2.3 预生成法 3. 部署模型3.1 其他部署方案 4. 设计4.1 重定向响应码4.2 短 URL 预生成文件及预加载4.3 用户自定义…

代码静态检查简介

在软件开发领域,确保代码质量是项目成功的关键要素之一。代码静态检查作为一种重要的质量保证手段,通过在不运行代码的情况下,对代码进行自动化的分析和审查,帮助开发团队及时发现并修复潜在的缺陷、安全漏洞以及不符合编码规范的…

Jenkins详细使用教程

目录 1. 什么是Jenkins? 2. 为什么使用Jenkins? 3. 安装Jenkins 3.1 下载相关文件 3.2 解压Linux版本的JDK 3.3 配置JDK环境 3.4 运行jenkins.war 3.5 安装完成 4. 访问Jenkins 5. 修改密码 6. 集成JDK 7. Jenkins集成Git 7.1 使用Jenkins拉取…

7月26日贪心练习-摆动序列专题

前言 大家好,今天学习用贪心思想解决摆动序列问题,共三题,分享自己的思路,请大家多多支持 算法思想 大家可以先看看这道我们后面会讲的题看看怎么个事,. - 力扣(LeetCode) 由此题题解说明算…

若依ruoyi+AI项目二次开发

//------------------------- //定义口味名称和口味列表静态数据 const dishFlavorListSelectref([ {name:"辣度",value:["不辣","微辣","中辣","重辣"]}, {name:"忌口",value:["不要葱","不要…

JVM之对象的创建过程

目录 对象的创建: 对象内存分配的两种方式: 指针碰撞: 空闲列表: 对象的内存布局(基本结构): 对象的访问定位: 主流的访问方式主要有使用句柄和直接指针两种。 对象的创建&…

基于微信小程序+SpringBoot+Vue的流浪动物救助(带1w+文档)

基于微信小程序SpringBootVue的流浪动物救助(带1w文档) 基于微信小程序SpringBootVue的流浪动物救助(带1w文档) 本系统实现的目标是使爱心人士都可以加入到流浪动物的救助工作中来。考虑到救助流浪动物的爱心人士文化水平不齐,所以本系统在设计时采用操作简单、界面…

FPGA实现LCD1602控制

目录 注意! 本工程采用野火征途PRO开发板,外接LCD1602部件进行测试。 有偿提供代码!!!可以定制功能!!! 联系方式见底部 一、基础知识 1.1 引脚信息 1.2 指令 1.2.1 清屏 1.…

ubuntu实践

目录 扩容 本机上ping不通新建立的虚拟机 ssh连接 装sshd ssh客户端版本较低,会报key exchange算法不匹配问题 ubuntun上装docker 将centos7下的安装包改造成适配 ubuntu的包 参考文章 扩容 Hyper-V 管理器安装的ubutun扩容磁盘空间说明_hype-v磁盘扩容-…