当前位置: 首页 > news >正文

【Kubernetes】k8s中容器之间、pod之间如何进行网络通信?

目录

  • Pod
  • Kubernetes 网络模型
  • 同一Pod上的容器之间进行通信
  • 同一Node上的不同Pod之间进行通信
  • 不同Node上的Pod之间进行通信
  • Service
  • 参考


Pod

首先来回顾一下Pod:

Pod 是用于构建应用程序的最小可部署对象。单个 Pod 代表集群中正在运行的工作负载,并封装一个或多个 Docker 容器、任何所需的存储以及唯一的 IP 地址


Kubernetes 网络模型

集群中每一个 Pod 都会获得自己的、 独一无二的 IP 地址。一个Pod里的一组容器共享相同的IP地址。

Kubernetes 强制要求所有网络设施都满足以下基本要求(从而排除了有意隔离网络的策略):

  • Pod 能够与所有其他节点上的 Pod 通信, 且不需要网络地址转译(NAT)
  • 节点上的代理(比如:系统守护进程、kubelet)可以和节点上的所有 Pod 通信。

考虑到这些限制,我们剩下四个不同的网络问题需要解决:

  • 容器到容器网络
  • Pod 到 Pod 网络
  • Pod 到服务网络
  • 互联网到服务网络

同一Pod上的容器之间进行通信

通常,我们将虚拟机中的网络通信视为直接与以太网设备交互。默认情况下,Linux 将每个进程分配给根网络命名空间,以提供对外部世界的访问。如下图所示:
在这里插入图片描述

Pod 被建模为一组共享网络命名空间的 Docker 容器。Pod 中的容器都具有通过分配给 Pod 的网络命名空间分配的相同 IP 地址和端口空间,并且可以通过 localhost 找到彼此,因为它们驻留在同一命名空间中。

根本原因是使用Docker的一种网络模型:–net=container 能够让同一个Pod内的多个docker容器相互通信。

container模式指定新创建的Docker容器和已经存在的一个容器共享一个网络命名空间,也就是说新创建的Docker容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。

在k8s中每个Pod容器有一个pause容器,它拥有独立的网络命名空间,在Pod内启动Docker容器时候使用 –net=container就可以让当前Docker容器加入到Pod容器拥有的网络命名空间(pause容器)。


同一Node上的不同Pod之间进行通信

从 Pod 的角度来看,它存在于自己的以太网命名空间中。不同的Pod存在于不同的网络命名空间里。
但是可以使用Linux虚拟以太网设备或由两个虚拟接口组成的veth对 将两个网络命名空间进行连接 。要连接 Pod 命名空间,我们可以将 veth 对的一侧分配给根网络命名空间,将另一侧分配给 Pod 的网络命名空间。然后使用网桥把两个虚拟网络组成为一个以太网。如下图所示:
在这里插入图片描述
在上面这个网络模型下,Pod之间是如何通信的呢?

  1. Pod 1 向其自己的以太网设备发送数据包eth0,该设备可作为 Pod 的默认设备。对于 Pod 1,eth0通过虚拟以太网设备连接到根命名空间veth0
  2. 网桥cbr0配置有veth0连接到它的网段。一旦数据包到达网桥,网桥就会使用 ARP 协议解析将数据包发送到的正确网段
  3. 当数据包到达虚拟设备veth1时,它会直接转发到 Pod 2 的命名空间以及该命名空间内的设备eth0

不同Node上的Pod之间进行通信

同样会用到虚拟接口和网桥。

在这里插入图片描述

  1. 数据包首先通过 Pod 1 的以太网设备发送,该设备与根命名空间 中的虚拟以太网设备配对。最终,数据包到达根命名空间的网桥
  2. ARP 将在网桥处失败,因为没有设备连接到具有数据包正确 MAC 地址的网桥。发生故障时,网桥将数据包从默认路由(根命名空间的eth0设备)发送出去。此时,路由离开节点并进入网络
  3. 我们现在假设网络可以根据分配给节点 的 CIDR 块将数据包路由到正确的节点。数据包进入目标节点(在 VM 2 上)的根命名空间eth0,并通过网桥路由到正确的虚拟以太网设备
  4. 最后,路由通过驻留在 Pod 4 命名空间内的虚拟以太网设备对完成

一般来说,每个节点都知道如何将数据包传递到在其内运行的 Pod。一旦数据包到达目标节点,数据包的流动方式与在同一节点上的 Pod 之间路由流量的方式相同。


Service

我们要知道,Pod的IP地址不持久,会随着扩展或缩小、应用程序崩溃或节点重启而出现和消失。哪怕重启一个Pod,它的IP也可能和前一次不一样。

所以Kubernetes 里使用Service来管理一组 Pod 的状态,允许我们跟踪一组随时间动态变化的 Pod 的IP 地址。Service充当 Pod 的抽象,并将单个虚拟 IP 地址分配给一组 Pod 的IP 地址

任何发送到服务虚拟 IP 的流量都将被路由到与该虚拟 IP 关联的 Pod 集。这允许与 Service 关联的 Pod 集随时更改 ,只要虚拟IP不改,客户端就感觉不到Pod的变化。

创建新的 Kubernetes Service时,系统会创建一个新的虚拟 IP(也称为集群 IP)。集群内的任何位置,寻址到虚拟 IP 的流量都将负载均衡到与Service关联的一组Pod。实际上,Kubernetes 会自动创建并维护一个分布式集群内负载均衡器,该均衡器将流量分配到Service关联的健康 Pod。


参考

https://sookocheff.com/post/kubernetes/understanding-kubernetes-networking-model/
https://kubernetes.io/zh-cn/docs/concepts/services-networking/

相关文章:

【Kubernetes】k8s中容器之间、pod之间如何进行网络通信?

目录 PodKubernetes 网络模型同一Pod上的容器之间进行通信同一Node上的不同Pod之间进行通信不同Node上的Pod之间进行通信Service参考 Pod 首先来回顾一下Pod: Pod 是用于构建应用程序的最小可部署对象。单个 Pod 代表集群中正在运行的工作负载,并封装一…...

神经网络冻结参数后权重仍然更新

1. 背景 冻结model中的cnn1层: model.cnn1.requires_grad False 运行后发现cnn1的参数仍然在更新 作为一个编程菜逼,我乍一看没毛病呀,凌晨1点的我越调越迷糊,终于最终还是找到了问题,还是基础不牢 2.原因 应使…...

STM32学习7 按键扫描

STM32学习7 按键扫描 一、实验电路介绍二、按键GPIO初始化三、扫描原理1. GPIO引脚配置2. 状态轮询3. 按键状态检测4. 循环扫描的优缺点优点:缺点: 四、一次扫描与持续扫描五、代码实现1. 头文件定义2. 函数实现3. 主体函数 一、实验电路介绍 本实验使用…...

图像物体的边界- 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 给定一个二维数组M行N列,二维数组里的数字代表图片的像素,为了简化问题,仅包含像素1和5两种像素,每种像素代表一个…...

.idea文件详解

.idea文件的作用: .idea文件夹是存储IntelliJ IDEA项目的配置信息,主要内容有IntelliJ IDEA项目本身的一些编译配置、文件编码信息、jar包的数据源和相关的插件配置信息。一般用git做版本控制的时候会把.idea文件夹排除,因为这个文件下保存的…...

安卓JNI基础知识

JNI基础知识 JNI简介NDK配置开发环境JNI实践配置CMakeJNI编码JNI注册1.静态注册2.动态注册 编译方式CMakeLists编译Makefile编译命令编译 JNI和C/C代码分离Java调用C/C查看so中包含的方法 C/C调用Java打印C/C的log生成多个共享库soJNI调试 本文整理了JNI技术基础知识 JNI简介 …...

Nginx高级技巧:实现负载均衡和反向代理

文章目录 Nginx概述Nginx作用正向代理反向代理负载均衡动静分离 Nginx的安装 -->Docker3.1 安装Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源码安装nginx常用命令nginx配置文件配置文件位置配置文件结构详情 Nginx的反向代理【重点】基于Nginx实现反向代理4…...

2024年2月最新微信域名检测拦截接口源码

这段PHP代码用于检测指定域名列表中的域名是否被封。代码首先定义了一个包含待检测域名的数组 $domainList,然后遍历该数组,对每个域名发送HTTP请求并检查响应内容以判断域名是否被封。 具体步骤如下: 1. 定义待检测的域名列表。 2. 遍历域名…...

1、Linux-安装

一、Linux和Windows的一些区别 1、Linux严格区分大小写——【Windows创建文件夹时不区分大小写】 2、Linux中所有内容都以文件形式存储,包括硬件 3、Linux不靠拓展名区分文件类型,而是可以通过读取文件开头的一些字节来区分。 但是在实际使用中一般要…...

flutter 父组件调用子组件方法

当子组件是有状态组件 声明GlobalKey 如 声明 GlobalKey formKey GlobalKey<FormState>(); Form( key: formKey, autovalidateMode: AutovalidateMode.always, child: Column( children: <Widget>[ TextFormField( autofocus: true, initialValue: "a&quo…...

京东云硬钢阿里云:承诺再低10%

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 阿里云刚刚宣布史上最大规模的全线产品降价20%&#xff0c;这热度还没过&#xff0c;京东云当晚就喊话&#xff1a;“随便降、比到底!&#xff0c;全网比价&#xff0c;击穿低价&#xff0c;再低10%”&#xff0c;并…...

Phoncent博客:探索AI写作与编程的无限可能

Phoncent博客&#xff0c;一个名为Phoncent的创新AIGC博客网站&#xff0c;于2023年诞生。它的创始人是庄泽峰&#xff0c;一个自媒体人和个人站长&#xff0c;他在网络营销推广领域有着丰富的经验。庄泽峰深知人工智能技术在内容创作和编程领域的潜力和创造力&#xff0c;因此…...

【Go-Zero】测试API查询信息无法返回数据库信息与api、rpc文件编写规范

【Go-Zero】测试API查询信息无法返回数据库信息与api、rpc文件编写规范 大家好 我是寸铁&#x1f44a; 总结了一篇测试API查询信息无法返回数据库信息与api、rpc文件编写规范的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 问题背景 大家好&#xff0c;我是寸铁&#xff01…...

SpringBootWeb快速入门

1.创建springboot工程&#xff0c;新建module 2.勾选web开发相关依赖 3.删除多余文件 4.新建类 5.启动类中运行main方法 6.启动 默认端口号8080 7.打开浏览器&#xff0c;地址栏输入 8.报错 9.原因&#xff0c;控制层位置放错&#xff0c;剪切controller层放进com.example …...

【书生·浦语大模型实战营】第 2 节 -课后作业

第二节 -轻松玩转书生浦语大模型趣味 Demo-课后作业 0.课程体验0.1 鸡兔同笼0.2 逻辑推理0.3 AI会毁灭人类吗&#xff1f; 1.课后作业1.1 基础作业1.1.1 作业11.1.2 作业2 0.课程体验 课程链接&#xff1a;https://github.com/internLM/tutorial 首先&#xff0c;这个课程是免费…...

Java如何使用OpenCV

背景&#xff1a;利用OpenCV功能批量处理视频 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的功能和工具&#xff0c;可用于处理图像和视频数据&#xff0c;并在各种应用中发挥着重要作…...

C++指针(三)

个人主页:PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 文章目录 前言 1.字符指针 1.1字符指针的概念 1.2字符指针的用处 1.3字符指针的操作 1.3.1定义 1.3.2初始化 1.4字符指针使用注意事项 2.数组参数&#xff0c;指针参数 2.1数组参数 2.1.1数组参数的概念 2.1…...

消息中间件之RocketMQ源码分析(二十七)

Broker提交或回滚事务消息 当生产者本地事务处理完成并且Broker回查事务消息后&#xff0c;不管执行Commit还是Rollback,都会根据用户本地事务的执行结果发送一个End_transaction的RPC请求给Broker&#xff0c;Broker端处理该请求的类是EndTransactionProcessor 第一步&…...

C习题002:澡堂洗澡

问题 输入样例 在这里给出一组输入。例如&#xff1a; 2 5 1 3 3 2 3 3 输出样例 在这里给出相应的输出。例如&#xff1a; No代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB 代码 #include<stdio.h> int main() {int N,W,s,t,p;int arr_s[…...

智能双星:遥测终端机与柳林“巡检机器人“,助力智能运维新升级!

随着科技的不断发展&#xff0c;智能化、自动化的运维管理已经成为企业追求高效、稳定运营的重要方向。柳林遥测终端机、柳林e拍云平台以及巡检机器人的组合&#xff0c;为企业带来了一种全新的、前置的、无感的智能运维体验。 柳林遥测终端机&#xff0c;以其强大的数据采集和…...

AI配音、AI作曲零基础快速上手

AI配音、AI作曲零基础快速上手&#x1f4dd; 本章学习目标&#xff1a;通过本章学习&#xff0c;你将全面掌握"AI配音、AI作曲零基础快速上手"这一核心主题&#xff0c;建立系统性认知。一、引言&#xff1a;为什么这个话题如此重要 在人工智能快速发展的今天&#x…...

Windows冷注入实战:如何绕过内存检测并加密混淆DLL?【附完整代码】

1. 冷注入技术基础与内存检测原理 冷注入&#xff08;Cold Injection&#xff09;是Windows平台下一种特殊的DLL注入技术&#xff0c;与热注入不同&#xff0c;它不需要目标进程处于运行状态。这种技术最早被用于软件插件开发&#xff0c;后来在安全领域有了更广泛的应用。我刚…...

Xtreme Download Manager:解决大文件下载与视频抓取难题的终极方案

Xtreme Download Manager&#xff1a;解决大文件下载与视频抓取难题的终极方案 【免费下载链接】xdm Powerfull download accelerator and video downloader 项目地址: https://gitcode.com/gh_mirrors/xd/xdm 你是否曾因下载大文件速度缓慢而烦恼&#xff1f;是否想在Y…...

免费开源分屏神器:Nucleus Co-Op如何让单人游戏秒变多人派对

免费开源分屏神器&#xff1a;Nucleus Co-Op如何让单人游戏秒变多人派对 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾经遇到过这样的尴…...

Steam成就管理器终极指南:3分钟解锁所有游戏成就的免费神器

Steam成就管理器终极指南&#xff1a;3分钟解锁所有游戏成就的免费神器 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 还在为那些看似不可能完成的游戏成…...

八大网盘终极直链解析:告别限速的完整免费解决方案

八大网盘终极直链解析&#xff1a;告别限速的完整免费解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

深度解析部署包校验:OpenClaw哈希特征提取与比对实操手册

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

科研党福音:用Python+NoteExpress搞定Pubmed文献批量下载(附避坑指南)

科研效率革命&#xff1a;PythonNoteExpress自动化文献下载全攻略 在科研工作中&#xff0c;文献收集是最基础却最耗时的环节之一。想象一下&#xff0c;当你从PubMed检索出200篇相关文献&#xff0c;却要手动逐一点击下载&#xff0c;这种重复劳动不仅消磨时间&#xff0c;更消…...

RWKV7-1.5B-g1a快速部署指南:免外网依赖、离线加载、GPU算力高效利用实操

RWKV7-1.5B-g1a快速部署指南&#xff1a;免外网依赖、离线加载、GPU算力高效利用实操 1. 模型简介 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构的多语言文本生成模型&#xff0c;特别适合中文场景下的轻量级应用。这个1.5B参数的版本在保持较高生成质量的同时&#xff0c;对硬件…...

Z-Image-Turbo-辉夜巫女效果增强:结合ControlNet姿势控制生成进阶教程

Z-Image-Turbo-辉夜巫女效果增强&#xff1a;结合ControlNet姿势控制生成进阶教程 1. 模型介绍与部署准备 1.1 什么是Z-Image-Turbo-辉夜巫女 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型的LoRA版本&#xff0c;专门针对生成"辉夜巫女"风格图片进行了优化。这…...