【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信

Kubernetes中Pod间的通信

本系列文章共3篇:

  • 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信
  • 【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信(本文介绍)
  • 【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信

简介

在本系列文章的第1、2篇,我们将了解在使用Calico作为容器网络接口(CNI)时,Kubernetes中Pod间的通信在不同场景下是如何路由的。
在本系列文章的第3篇,我们将探讨在集群中Pod与服务之间的通信是如何管理的。

为此,我们将使用TCPDUMP、Wireshark以及如traceroute这样的Linux命令来观察数据包。在第一部分,我们将查看位于同一子网内不同节点上的两个容器/Pod之间的流量。在第二部分,我们将使用由路由器分隔且使用BGP的不同子网中的节点,包括使用和不使用虚拟可扩展局域网(VXLAN)的情况。

本部分研究两种通信场景:

  • 场景4:不使用VXLAN的BGP
  • 场景5:使用BGP和VXLAN进行隧道传输

场景4:不使用VXLAN的BGP

我们在之前的场景中了解到,Pod之间的流量无需网络地址转换(NAT)即可直接路由。因此,即使这个新场景更为复杂,但并没有太大差异,依旧是路由,而源地址和目的地址保持不变。

在这里插入图片描述

  1. 重新配置kubeadm2

由于在这个新场景中,kubeadm2将与kubeadm1不在同一子网,首先要将其从集群中移除,然后更改其IP地址和网关。此时,kubeadm2无法访问kubeadm1,因为这两个节点之间的路由无效。

kubectl delete node kubeadm2
# 在kubeadm2上执行
sudo kubeadm reset
  1. 创建骨干网络

我们在集群节点之间添加了两个路由器。BGP(边界网关协议)将用于Pod之间的流量路由。Calico中包含了Bird,我们在路由器上也安装了相同的Bird软件。请注意,我们也可以使用不同的软件,甚至是一些物理路由器。

  1. router1配置

以下是基于Ubuntu 24.04 LTS的网络和Bird的配置文件:

# /etc/netplan/50-cloud-init.yaml
network:ethernets:lo:  addresses:- 10.0.0.1/32 # 我们将用它作为路由器IDens33: # 此接口用于连接互联网,你的可能不同addresses:- 192.168.8.10/24routes:- to: defaultvia: 192.168.8.2nameservers:addresses:- 8.8.8.8- 0.0.0.0ens37: # 此接口用于连接本地节点addresses:- 192.168.16.1/24ens38: # 此接口用于连接另一侧的节点addresses:- 192.168.18.1/24version: 2
# /etc/bird/bird.conf
log syslog all;
router id 10.0.0.1; # 环回地址
protocol device {
}
protocol direct {interface "lo", "ens37", "ens38";
}
protocol kernel {export all;
}
protocol static {
}
protocol bgp router2 {local 192.168.18.1 as 64513;neighbor  192.168.18.2 as 64513;next hop self;import all;export all;
}
protocol bgp kubeadm1 {local 192.168.16.1 as 64513;neighbor  192.168.16.101 as 64512;import all;

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek私有化本地部署图文(Win+Mac)

目录 一、DeepSeek私有化本地部署【Windows】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 a、直接访问 b、chatbox网页访问 二、DeepSeek本地部署【Mac】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 5、删除已下载的模型 三、DeepSeek…

点(线)集最小包围外轮廓效果赏析

“ 图像、点集、线集合最小外轮廓计算应用较为广泛,如抠图、神奇选择、LOD、碰撞检查等领域,提高场景效率” 1.前言 作者基于递归迭代求解实现点集的最小外轮廓计算,在CGLib库中实现,已集成于CGViewer,可联系作者试用&…

博客园-awescnb插件-geek皮肤优化-Markdown样式支持

💖简介 博客园-awescnb插件-geek皮肤下,Markdown语法中对部分样式未正常支持,可以通过自定义CSS进行完善。 ✨定义列表 定义自定义CSS 博客园->管理->设置->页面定制 CSS 代码 添加代码 /* 定义列表 */ dl dt{font-size: 14px;f…

接口测试与常用接口测试工具

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口&#xff…

三维粒子滤波(Particle Filter)MATLAB例程,估计三维空间中匀速运动目标的位置(x, y, z),提供下载链接

三维粒子滤波(Particle Filter)MATLAB例程,估计三维空间中匀速运动目标的位置(x, y, z) 文章目录 介绍功能运行结果代码介绍 本 MATLAB 代码实现了三维粒子滤波( P a r t i c l e F i l t e

语言月赛 202311【基因】题解(AC)

》》》点我查看「视频」详解》》》 [语言月赛 202311] 基因 题目描述 有一个长度为 n n n 的字符串 S S S。其只包含有大写字母。 小 A 将 S S S 进行翻转后,得到另一个字符串 S ′ S S′。两个字符串 S S S 与 S ′ S S′ 对应配对。例如说,对…

PostgreSQL函数自动Commit/Rollback所带来的问题

一、综述 今天在PostgreSQL遇到一个奇怪的现象,简而言之,是想用函数(存储过程)实现插入记录,整个过程没报错但事后却没找到记录!忙活半天,才发现原因是PostgreSQL函数(存储过程&…

JVM为什么要指针压缩?为什么能指针压缩?原理是什么?

面试官:为什么要指针压缩,为什么能指针压缩?原理是什么? 指针压缩(Pointer Compression)是 Java 虚拟机(JVM)中用于优化内存使用的一种技术,特别是在 64 位环境下。 为…

Mac上搭建k8s环境——Minikube

1、在mac上安装Minikube可执行程序 brew cask install minikub 安装后使用minikube version命令查看版本 2、安装docker环境 brew install --cask --appdir/Applications docker #安装docker open -a Docker #启动docker 3、安装kubectl curl -LO https://storage.g…

Kafka 可靠性探究—副本刨析

Kafka 的多副本机制提升了数据容灾能力。 副本通常分为数据副本与服务副本。数据副本是指在不同的节点上持久化同一份数据;服务副本指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。 1 副本刨析 1.1 相关概念 AR&…

逻辑起源 - 比较DS与豆包对“逻辑”源头的提炼差异

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 问题:“逻辑”的源头是什么? 豆包回答: “逻辑” 一词源…

Qt:Qt环境配置安装

搭建Qt开发环境 Qt的开发工具概述 Qt 支持多种开发工具,其中比较常用的开发工具有:Qt Creator、Visual Studio、Eclipse。 Qt Creator Qt Creator是⼀个轻量级的跨平台集成开发环境(IDE),专为使用Qt框架进行应用程…

文献阅读分享《新闻推荐中的审议式多样性:操作化与实验用户研究》

标题期刊年份Deliberative Diversity for News Recommendations: Operationalization and Experimental User StudyProceedings of the Seventeenth ACM Conference on Recommender Systems (RecSys 23)2023 🌟论文背景 在信息爆炸的时代,新闻推荐系统…

AspectJ 中通知方法参数绑定

我们知道 AspectJ 中的通知方法可以携带参数,例如 Before 前置通知方法可以携带一个 JoinPoint 类型参数,那么还可以携带其它参数吗? 示例一 Before(value "execution(* *..UserServiceImpl.doSome(String))", argNames "…

bat脚本实现自动化漏洞挖掘

bat脚本 BAT脚本是一种批处理文件,可以在Windows操作系统中自动执行一系列命令。它们可以简化许多日常任务,如文件操作、系统配置等。 bat脚本执行命令 echo off#下面写要执行的命令 httpx 自动存活探测 echo off httpx.exe -l url.txt -o 0.txt nuc…

Golang 并发机制-6:掌握优雅的错误处理艺术

并发编程可能是提高软件系统效率和响应能力的一种强有力的技术。它允许多个工作负载同时运行,充分利用现代多核cpu。然而,巨大的能力带来巨大的责任,良好的错误管理是并发编程的主要任务之一。 并发代码的复杂性 并发编程增加了顺序程序所不…

数据分析系列--[11] RapidMiner,K-Means聚类分析(含数据集)

一、数据集 二、导入数据 三、K-Means聚类 数据说明:提供一组数据,含体重、胆固醇、性别。 分析目标:找到这组数据中需要治疗的群体供后续使用。 一、数据集 点击下载数据集 二、导入数据 三、K-Means聚类 Ending, congratulations, youre done.

71.StackPanel黑白棋盘 WPF例子 C#例子

就是生成黑白棋盘&#xff0c;利用该控件能自动排列的功能。用一个横向的StackPanel嵌套纵向的StackPanel&#xff0c;然后在里面添加设定好长和高的矩形。 因为StackPanel是按照控件的大小展示的。所以如果不设置长和宽。就会显示不出矩形。 <StackPanel Orientation"…

【吾爱出品】开源桌面组件:widgets

widgets 桌面组件 链接&#xff1a;https://pan.xunlei.com/s/VOIQXVWeQIXS_K7NRvVHun_7A1?pwdgq4j# 一款用 vue3 构建的Windows桌面小部件。 这是桌面组件前端开源组件&#xff0c;作者称&#xff1a;项目还在持续完善中&#xff0c;目前包含键盘演示、抖音热榜、喝水提醒…

【QT笔记】使用QScrollArea实现多行文本样式显示

目录 一、QScrollArea 的基本概念 二、demo代码 三、实现效果 1、页面空间足够&#xff0c;无滚动条时显示效果 2、有滚动条时显示效果 一、QScrollArea 的基本概念 QScrollArea 是 Qt 框架中用于提供一个滚动条区域&#xff0c;允许用户滚动查看比当前可视区域更大的内容…