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

ops/2025/2/8 10:11:11/

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进行隧道传输

BGP_16">场景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.ppmy.cn/ops/156697.html

相关文章

网络安全—DDoS攻防

背景简述:DDoS攻击分为很多类型,有消耗网络带宽的流量攻击,有消耗服务器资源的应用层攻击等。影响巨大,且让无论大公司还是小公司都肃然“起敬”的当属:流量攻击。在流量越来越廉价的今天,攻击流量小则几百…

【AI应用】免费的文本转语音工具:微软 Edge TTS 和 开源版 ChatTTS 对比

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 我试用了下Edge TTS,感觉还不错,不过它不支持克隆声音(比如自己的声音) 微软 Edge TTS 和 开源版 ChatTTS 都是免费的 文本转语音&…

链式结构二叉树(递归暴力美学)

文章目录 1. 链式结构二叉树1.1 二叉树创建 2. 前中后序遍历2.1 遍历规则2.2 代码实现图文理解 3. 结点个数以及高度等二叉树结点个数正确做法: 4. 层序遍历5. 判断是否完全二叉树 1. 链式结构二叉树 完成了顺序结构二叉树的代码实现,可以知道其底层结构…

探索 Spring Cloud Alibaba:开启微服务架构新时代

一、引言 在当今数字化浪潮中,软件系统的规模和复杂度不断攀升,传统的单体架构逐渐难以满足快速迭代、高并发处理以及灵活扩展的需求。微服务架构应运而生,它将一个大型的应用拆分成多个小型、自治的服务,每个服务专注于特定的业务…

华为支付-免密支付接入免密代扣说明

免密代扣包括支付并签约以及签约代扣场景。 开发者接入免密支付前需先申请开通签约代扣产品(即申请配置免密代扣模板及协议模板ID)。 华为支付以模板维度管理每一个代扣扣费服务,主要组成要素如下: 接入免密支付需注意&#x…

【算法专场】分治(下)

目录 前言 归并排序 思想 912. 排序数组 算法思路 算法代码 LCR 170. 交易逆序对的总数 算法思路 算法代码 315. 计算右侧小于当前元素的个数 - 力扣(LeetCode) 算法思路 算法代码 493. 翻转对 算法思路 算法代码 好久不见~时隔多日&…

动态词表采样:一种控制模型词表大小的新方法

在自然语言处理(NLP)领域,词汇量的大小直接影响着模型的复杂度和性能。面对超大规模的词表,如何有效地管理和利用这些词汇成为了研究者们关注的重点。本文将探讨一种创新的方法——通过动态采样方式从原始词表中提取有效词汇&…

掌握API和控制点(从Java到JNI接口)_37 JNI开发与NDK 05

*.so的入口函数&#xff1a;JNI_OnLoad() 执行System.loadLibrary()函数时&#xff0c; VM会反向调用*.so里的JNI_OnLoad()函数。用途有二&#xff1a; 1. VM询问此*.so使用的JNI版本编号。 2. VM要求*.so做一些初期设定工作(Initialization)&#xff0c;例如登记<函…