Kubernetes 中 BGP 与二层网络的较量:究竟孰轻孰重?

news2025/2/5 13:48:52

如果你曾搭建过Kubernetes集群,就会知道网络配置是一个很容易让人深陷其中的领域。在负载均衡器、服务通告和IP管理之间,你要同时应对许多变动的因素。对于许多配置而言,使用二层(L2)网络就完全能满足需求。但边界网关协议(BGP)—— 支撑互联网运行的技术 —— 也逐渐出现在有关Kubernetes的讨论中。那么,为什么人们对在Kubernetes中使用BGP而非二层网络如此兴奋呢?

在这里插入图片描述

让我们详细剖析一下,看看究竟为何如此。

首先,我们这里在讨论什么?

在Kubernetes中部署服务时,目标是让这些服务能从外部访问到。外部可能指其他内部服务、外部用户,或者两者皆是。而实现这种可访问性的 “方式” 归根结底在于网络配置。默认情况下,Kubernetes对这种复杂性进行了抽象处理,但当你在裸机层面进行管理时,就需要深入了解其中细节了。

二层网络是传统的以太网式网络通信方式。它在同一广播域(基本上就是你的本地网络)内运行,并使用诸如地址解析协议(ARP)等协议将IP地址映射到MAC地址。可以把它看作是服务通告的 “本地” 选项。

另一方面,边界网关协议(BGP)是一种路由协议,旨在处理不同网络之间的通信。它不局限于在本地网络内工作,而是通告哪些IP地址或子网属于何处 —— 无论是在数据中心内部还是外部。

为何在Kubernetes中使用BGP?

本质上,BGP允许你的Kubernetes集群直接向路由器通告服务IP,从而无需依赖二层网络基于广播的通信方式。这带来了一些显著的优势:

在这里插入图片描述

1. 更强的可扩展性

二层网络在小型集群中运行良好,但随着环境规模的扩大,广播噪声也会随之增加。想象一下,几十甚至几百个节点相互大声发送ARP请求的场景。BGP的扩展性则要好得多,因为它不依赖广播。它只是简单地告诉路由器:“嘿,我这里有这个IP。”

2. 高可用性和故障转移

使用二层网络时,如果持有服务IP的节点出现故障,Kubernetes在重新调配资源时会有延迟。BGP则能很好地解决这个问题。当一个节点发生故障时,通往其IP的路由会从网络中撤销,流量会自动流向托管该服务的另一个节点。这个过程快速且无缝。

3. 全网集成

二层网络局限于本地网络,而BGP可以突破这一限制。它直接与上游路由器和对等设备通信,使外部设备能够准确知道将流量发送到何处。这在多数据中心或混合云配置中特别有用。

为何不一直使用二层网络呢?

在你认为BGP能解决Kubernetes所有问题之前,我们也不能完全否定二层网络。对于较小的配置或家庭实验室而言,二层网络通常更易于管理和部署。像MetalLB这样的工具可以高效处理基于二层的IP通告,对许多用户来说,这就足够了。

以下是二层网络的优势所在:

  • 简单性:二层网络不需要复杂的路由器配置,也无需深入了解网络协议。
  • 低资源需求:无需额外的CPU周期或内存来处理路由通告和计算。

但是,当节点数量超过几个,或者需要强大的故障转移和负载均衡功能时,二层网络就会显得力不从心。这时BGP就派上用场了。

BGP为何如此重要?

可以把BGP看作是Kubernetes网络的升级版。BGP不再依赖简单的广播机制,而是通过直接与网络基础设施进行通信,让你的集群变得更智能。这就是为什么大规模部署,尤其是在生产环境中,更倾向于使用BGP。

在这里插入图片描述

主要优势:

  1. 动态路由通告: Dynamic Route Advertising
    BGP动态通告哪些节点可以处理特定IP或子网的流量。如果一个节点离线,BGP几乎能立即更新网络,确保停机时间最短。
  2. 等价多路径路由:Equal-Cost Multi-Path Routing(ECMP)
    使用BGP,你可以将流量均匀分配到多个节点或网络路径上。这意味着更好的性能和更少的瓶颈。
  3. 消除单点故障
    BGP让你能够构建冗余的高可用网络。通过将集群中的所有节点与路由器建立对等连接,你可以避免单个节点成为所有流量的网关。

在Kubernetes中开始使用BGP

如果你准备尝试使用BGP,像MetalLB这样的工具会让这个过程更轻松。MetalLB是裸机Kubernetes集群的负载均衡器,它同时支持二层和BGP模式。

  • 在二层模式下,MetalLB使用ARP在本地网络内通告IP。这是默认设置,适用于小规模配置。
  • 在BGP模式下,MetalLB与你的路由器或其他网络设备建立对等连接,以便在整个网络中通告IP。

使用MetalLB配置BGP的步骤:

在这里插入图片描述

  1. 安装MetalLB
    将MetalLB的清单文件添加到你的集群中,并为BGP模式配置其configMap。
  2. 设置BGP对等体(Peers)
    你需要配置网络路由器或交换机,使其与Kubernetes节点建立对等连接。这通常涉及共享自治系统号(ASN)并设置安全措施(如MD5认证)。
  3. 通告IP
    一切就绪后,MetalLB将动态处理IP通告。

那么,结论是什么呢?

如果你运行的是小型Kubernetes配置或家庭实验室,通常二层网络就足够了。它简单明了,且能满足需求。但如果你管理的是更大的生产环境,或者需要处理高可用性和多节点故障转移,BGP则能提供显著优势。这不仅仅是关于 “炫酷技术”,它确实能让你的网络更智能、更可靠。

归根结底,BGP和二层网络的选择取决于规模和复杂性。对许多人来说,BGP可能有些大材小用,但对另一些人来说,它是充分发挥Kubernetes集群潜力的关键。而且,一旦你完成设置,看着网络自动处理一切,还挺神奇的。

参考:

  1. https://medium.com/@PlanB./bgp-vs-layer-2-in-kubernetes-whats-the-big-deal-ca4269720442
  2. 《kubernetes in action》

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

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

相关文章

大模型综述一镜到底(全文八万字) ——《Large Language Models: A Survey》

论文链接:https://arxiv.org/abs/2402.06196 摘要:自2022年11月ChatGPT发布以来,大语言模型(LLMs)因其在广泛的自然语言任务上的强大性能而备受关注。正如缩放定律所预测的那样,大语言模型通过在大量文本数…

物理群晖SA6400核显直通win10虚拟机(VMM)

写在前面:请先确保你的核显驱动支持开启SR-IOV 确保你的BIOS开启了以下选项: VT-D VMX IOMMU Above 4G ResizeBAR 自行通过以下命令确认支持情况: dmesg | grep -i iommudmesg | grep DMAR分配1个虚拟vGPU:echo 1 | sudo tee /sy…

【python】tkinter实现音乐播放器(源码+音频文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【python】tkinter实现音乐播放器(源码…

MyBatis-Plus速成指南:常用注解

Table Name: 概述: MyBatis-Plus 在确定操作的表时,由 BaseMapper的泛型决定,即实体类决定,且默认操作的表名和实体类的类名一致 问题: 如果实体类类型的类名和要操作表的表名不一致会出现什么问题?(把 us…

Linux 压缩打包

Linux压缩打包 文章目录 Linux压缩打包压缩的意义和原理压缩的意义压缩的原理压缩与解压缩的好处 压缩打包命令.zipzip 命令用法unzip 的用法 .gzgzip 的用法gunzip 的用法 .bz2bzip2 的用法bunzip2 的用法 .xzxz 命令用法 tar 04-Linux压缩打包课后习题 压缩的意义和原理 压缩…

RabbitMQ深度探索:前置知识

消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…

智慧校园平台:构建现代化教育体系的技术支撑

在当今信息技术飞速发展的时代,智慧校园平台成为了现代教育领域中的重要组成部分。智慧校园平台不仅能够提升学校的管理水平,还能提供更为个性化和高效的教学服务,从而促进学生的全面发展。 数据分析是智慧校园平台的重要组成部分。通过对学生…

20250204将Ubuntu22.04的默认Dash的shell脚本更换为bash

20250204将Ubuntu22.04的默认Dash的shell脚本更换为bash 2025/2/4 23:45 百度:dash bash https://blog.csdn.net/2201_75772333/article/details/136955776 【Linux基础】dash和bash简介 Dash(Debian Almquist Shell)和 Bash(Bou…

Golang 并发机制-3:通道(channels)机制详解

并发编程是一种创建性能优化且响应迅速的软件的强大方法。Golang(也称为 Go)通过通道(channels)这一特性,能够可靠且优雅地实现并发通信。本文将揭示通道的概念,解释其在并发编程中的作用,并提供…

可视化大屏在石油方面的应用。

可视化大屏通过整合石油工业全链条数据,构建数字孪生驱动的运营监控体系,显著提升油气勘探、开采、储运及炼化的管理效能。其技术架构依托工业物联网(IIoT)实时采集钻井参数、管道压力、储罐液位等数据,通过OPC UA协议…

【学术投稿-2025年计算机视觉研究进展与应用国际学术会议 (ACVRA 2025)】从计算机基础到HTML开发:Web开发的第一步

会议官网:www.acvra.org 简介 2025年计算机视觉研究进展与应用(ACVRA 2025)将于2025年2月28-3月2日在中国广州召开,将汇聚世界各地的顶尖学者、研究人员和行业专家,聚焦计算机视觉领域的最新研究动态与应用成就。本次…

Axure PR 9 旋转效果 设计交互

大家好,我是大明同学。 这期内容,我们将学习Axure中的旋转效果设计与交互技巧。 旋转 创建旋转效果所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.在元件库中拖出一个按钮元件。 创建交互 创建按钮交互状态 1.选中按钮元件&#xf…

Docker 部署教程jenkins

Docker 部署 jenkins 教程 Jenkins 官方网站 Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)过程。它帮助开发人员自动化构建、测试和部署应用程序,显著提高软件开发的效率和质量…

计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战

前一篇文章,Tensor 基本操作5 device 管理,使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…

接入DeepSeek大模型

接入DeepSeek 下载并安装Ollamachatbox 软件配置大模型 下载并安装Ollama 下载并安装Ollama, 使用参数ollama -v查看是否安装成功。 输入命令ollama list, 可以看到已经存在4个目录了。 输入命令ollama pull deepseek-r1:1.5b, 下载deepse…

【论文复现】粘菌算法在最优经济排放调度中的发展与应用

目录 1.摘要2.黏菌算法SMA原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了一种改进粘菌算法(ISMA),并将其应用于考虑阀点效应的单目标和双目标经济与排放调度(EED)问题。为提升传统粘菌算法&#xf…

UE Bridge混合材质工具

打开虚幻内置Bridge 随便点个材质点右下角图标 就能打开材质混合工具 可以用来做顶点绘制

基于 yolov8_pyqt5 自适应界面设计的火灾检测系统 demo:毕业设计参考

基于 yolov8_pyqt5 自适应界面设计的火灾检测系统 demo:毕业设计参考 【毕业设计参考】基于yolov8-pyqt5自适应界面设计的火灾检测系统demo.zip资源-CSDN文库 【毕业设计参考】基于yolov8-pyqt5自适应界面设计的火灾检测系统demo.zip资源-CSDN文库 一、项目背景 …

Linux 传输层协议 UDP 和 TCP

UDP 协议 UDP 协议端格式 16 位 UDP 长度, 表示整个数据报(UDP 首部UDP 数据)的最大长度如果校验和出错, 就会直接丢弃 UDP 的特点 UDP 传输的过程类似于寄信 . 无连接: 知道对端的 IP 和端口号就直接进行传输, 不需要建立连接不可靠: 没有确认机制, 没有重传机制; 如果因…

chrome浏览器chromedriver下载

chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新,可以去下载最新的chromedriver使用,自动化中使用新的chromedr…