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

Kubernetes Cluster IP,Node IP,Pod IP间通信原理解析

目录

  • 1、Cluster IP
  • 2、Node IP
  • 3、NodePort
  • 4、Pod IP
  • 5、LoadBalancer
  • 6、三种IP间通信
    • 6.1、Pod IP 与 Pod IP 通信
    • 6.2、Pod IP 与 Cluster IP 通信
    • 6.3、Node IP 与 Pod IP 通信
    • 6.4、Node IP 与 Cluster IP
  • 7、YAML 示例
    • 7.1、ClusterIP Service
    • 7.2、LoadBalancer Service

1、Cluster IP

  • 定义:Cluster IP 是 Kubernetes 为每个 Service 分配的一个虚拟的、仅集群内部可访问的 IP 地址。这个 IP 不绑定到任何物理或虚拟网络接口,仅在 Kubernetes 集群内部有效。
  • 用途:Cluster IP 使得集群内的应用可以通过一个固定且稳定的 IP 访问 Service,而不需要知道后端 Pod 的具体 IP 或数量变化。Kube-Proxy 负责将发往 Cluster IP 的请求负载均衡到后端 Pod。

2、Node IP

  • 定义:Node IP 是 Kubernetes 集群中每个节点(物理服务器或虚拟机)的物理网卡的 IP 地址。这是节点在网络中的实际可路由地址,用于节点间的通信以及集群内外的通信。
  • 用途:外部系统访问集群内的服务时,尤其是通过 NodePort 和 LoadBalancer 类型的服务,通常需要通过 Node IP 加上相应的端口号来访问。

3、NodePort

  • 定义:NodePort 是一种 Service 类型,它会在每个节点的某个静态端口上公开服务。这意味着,外部可以通过任意节点的 IP 地址加上这个 NodePort 访问到 Service。
  • 用途:NodePort 提供了一种简单的方式,让集群外的客户端能够访问集群内的服务,常用于测试和调试环境。它比 LoadBalancer 更轻量,因为不需要云提供商的负载均衡器支持。

4、Pod IP

  • 定义:Pod IP 是分配给每个 Pod 的独立 IP 地址,由 Kubernetes 网络插件(如 Calico、Flannel 等)动态分配。这个 IP 地址属于虚拟的二层网络,允许同一网络平面内的 Pod 直接通过 Pod IP 通信。
  • 用途:Pod IP 使得集群内的 Pod 可以相互发现和直接通信,是实现服务间通信的基础。

5、LoadBalancer

  • 定义:LoadBalancer 是 Service 的一种类型,它会在云提供商(如 AWS、GCP、Azure 等)的层面创建一个负载均衡器,并将流量分发到集群内的多个节点。
  • 用途:LoadBalancer 适用于生产环境,提供了高可用性和扩展性。它允许外部客户端通过一个稳定且可预测的 DNS 名称或公共 IP 访问服务,自动处理后端节点的添加和移除,保证服务的持续可用性。

6、三种IP间通信

6.1、Pod IP 与 Pod IP 通信

  • 同一节点内:如果两个 Pod 部署在同一节点上,它们可以直接通过各自的 Pod IP 进行通信,这是由容器网络接口(CNI)插件(如 Flannel、Calico 等)负责配置的容器网络实现的。

  • 跨节点:当 Pod 分布在不同节点上时,它们之间的通信同样通过 Pod IP,但需要 CNI 插件确保网络平面的一致性,例如通过隧道技术(如 IPSec、VXLAN)封装 Pod 间的流量,或使用路由规则直接路由到目标节点上的 Pod。

6.2、Pod IP 与 Cluster IP 通信

  • 当 Pod 需要访问 Service 时,它不会直接访问 Service 后端的某个 Pod IP,而是通过 Service 的 Cluster IP 进行通信。Cluster IP 是一个虚拟的 IP 地址,由 Kubernetes 创建并管理。

  • kube-proxy 在每个节点上运行,它监听 Service 的变化,并通过 iptables 或 IPVS 规则,将发往 Cluster IP 的请求负载均衡地转发到该 Service 对应的所有后端 Pod(Endpoint)的 Pod IP 上。

6.3、Node IP 与 Pod IP 通信

  • 从 Node 到 Pod:在某些情况下,可能需要从 Node 直接访问 Pod IP。虽然 Kubernetes 不鼓励直接这样做,但在特殊场景下,比如调试,可以通过 Node 的网络栈路由到该节点上的 Pod。不过,由于 Pod IP 并非全局可达,通常需要在 Node 上使用 iptables 规则或特定网络插件的功能来实现。

  • 从外部到 Pod:通常不直接通过 Node IP 访问 Pod IP,而是通过 NodePort Service 或 LoadBalancer Service 间接访问。但如果配置了 hostNetwork: true,Pod 会共享宿主机网络,此时可以从外部通过 Node IP 加 Pod 容器端口访问 Pod。

6.4、Node IP 与 Cluster IP

  • 一般情况下,Node 本身并不直接与 Cluster IP 通信,因为 Cluster IP 是一个仅集群内部可访问的虚拟 IP。但是,kube-proxy 在每个 Node 上运行,它通过处理到 Cluster IP 的流量来实现对 Service 的访问,间接体现了 Node 与 Cluster IP 之间的交互。

7、YAML 示例

7.1、ClusterIP Service

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: MyAppports:- protocol: TCPport: 80targetPort: 9376type: ClusterIP

在这个例子中,my-service 服务通过 ClusterIP 类型定义,监听 80 端口,将流量转发到标签为 app=MyApp 的 Pod 的 9376 端口。

7.2、LoadBalancer Service

apiVersion: v1
kind: Service
metadata:name: my-loadbalancer-service
spec:selector:app: MyAppports:- protocol: TCPport: 80targetPort: 9376type: LoadBalancer

在这个例子中,my-loadbalancer-service 会创建一个负载均衡器,将外部流量通过 80 端口导入集群,并分配给标签为 app=MyApp 的 Pod 的 9376 端口,提供对外的高可用服务。

相关文章:

Kubernetes Cluster IP,Node IP,Pod IP间通信原理解析

目录 1、Cluster IP2、Node IP3、NodePort4、Pod IP5、LoadBalancer6、三种IP间通信6.1、Pod IP 与 Pod IP 通信6.2、Pod IP 与 Cluster IP 通信6.3、Node IP 与 Pod IP 通信6.4、Node IP 与 Cluster IP 7、YAML 示例7.1、ClusterIP Service7.2、LoadBalancer Service 1、Clust…...

随机链表的深拷贝

1.题目 解题思路一:暴力求解,先创建新链表,然后把旧链表中的val和next指针给复制到新链表中,根据旧链表中的random指针所指向的旧链表中的val值找到所对应的节点,记录该节点的位置,就像数组一样&#xff0c…...

328_C++_HTTP_HTTP协议传输data数据,为什么要进行base64编解码操作?

http传输data数据的时候,为什么必须进行base64转码后才能有效发送,接收方也必须base64转码后才能有效接受? HTTP  HTTP传输数据时,使用Base64编码并不是必须的,但它确实在某些情况下非常有用。以下是为什么在某些情况…...

【二叉树】Leetcode N 叉树的层序遍历

题目讲解 429. N 叉树的层序遍历 算法讲解 在做层序遍历的时候由于它的每一个结点是有val vector child组成,所以在做层序遍历的时候需要考虑它每一层结点的个数,那我们就可以使用一个queue保存每一层的结点;那么我们在做第一层的时候&am…...

Spring AI

目录 一、Spring AI 1、Spring AI简介 1.1、四次工业革命发展和变革 1.2、什么是人工智能? 1.3、人工智能的发展历程 1.4、什么是大模型? 1.5、如何训练大模型? 一、Spring AI 1、Spring AI简介 Spring AI Java接入人工智能大模型 1.1、四次工业革命发展和变革 人类…...

fiori SAP ui5 动态改变控件颜色

使用CustomData动态改变控件颜色 有时候我们需要改变控件颜色,对于高度封装的控件,显然改变控件CSS是比较困难的,幸好SAP UI5预设了一个customData的属性,每个控件都能使用她。 如下代码是判断汇率是否有改变,如果改…...

RabbitMQ php amqp

Linux debian 安装 Windows php amqp 扩展 PECL :: Package :: amqp 将 php_amqp.dll 复制到 php 的 ext 目录下 将 rabbitmq.4.dll 复制到 c:\windows\system32 目录下 php.ini extensionamqp...

对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:falses 思路:我刚开始是想着用…...

浅浅总结SQL中的事务.

在现实生活中有很多的线上支付的场景,当支付的时候,一方资金减少,另一方资金增加,在执行前后,两者的总体数额需要相同,为了保证这个操作的完整,所以提出了事务,那我们先来去写一个示例&#xff…...

C++ | Leetcode C++题解之第76题最小覆盖子串

题目&#xff1a; 题解&#xff1a; class Solution { public:unordered_map <char, int> ori, cnt;bool check() {for (const auto &p: ori) {if (cnt[p.first] < p.second) {return false;}}return true;}string minWindow(string s, string t) {for (const au…...

什么可以替代iframe?

网页嵌套中&#xff0c;iframe曾几何时不可一世&#xff0c;没有其他更好的选择&#xff01; iframe即内联框架&#xff0c;作为网页设计中的一种技术&#xff0c;允许在一个网页内部嵌套另一个独立的HTML文档。尽管它在某些场景下提供了便利&#xff0c;但也存在多方面的缺陷…...

HTTP/1.0、HTTP/1.1、HTTP/2.0区别

文章目录 区别HTTP/1.0HTTP/1.11. 持久连接&#xff08;长连接&#xff09;2. 管道化3. Host头字段4. 分块传输编码5. 缓存机制6. 请求方法 HTTP/2.01. 二进制分帧2. 多路复用3. 服务器推送4. 优先级设置5. 头信息压缩6. 安全性7. 流量控制 区别 特性HTTP/1.0HTTP/1.1HTTP/2.0…...

鸿蒙内核源码分析(文件句柄篇) | 你为什么叫句柄

句柄 | handle int open(const char* pathname,int flags); ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count); int close(int fd);只要写过应用程序代码操作过文件不会陌生这几个函数,文件操作的几个关键步骤嘛,跟把大…...

2024.5.8 关于 SpringCloud —— Ribbon 的基本认知

目录 Ribbon 负载均衡原理 工作流程 Ribbon 负载均衡规则 Ribbon 负载均衡自定义化 代码方式修改规则 配置文件方式修改规则 小总结 Ribbon 设定饥饿加载 Ribbon 负载均衡原理 工作流程 order-service 使用 RestTemplate 发送请求&#xff0c;随后该请求将会被 Ribbon 所…...

Lua 协程模拟 Golang 的 go defer 编程模式

封装go函数用于创建并启动一个协程&#xff1a; ---go函数创建并启动一个协程 ---param _co_task function 函数原型 fun(_co:thread) function go(_co_task)local co coroutine.create(_co_task) -- 创建一个暂停的协程coroutine.resume(co, co) -- 调用coroutine.resume激活…...

maven的安装与配置(超详细)

在Java开发中&#xff0c;配置Maven环境有几个重要的原因&#xff1a; 依赖管理&#xff1a;Maven 是一个强大的依赖管理工具&#xff0c;它能够帮助开发人员轻松地管理项目所需的各种第三方库和组件。通过在项目的 Maven 配置文件&#xff08;pom.xml&#xff09;中定义依赖&…...

springCloud服务降级使用到的组件

服务降级在Spring Cloud中通常使用的组件包括断路器&#xff08;Circuit Breaker&#xff09;和降级处理器&#xff08;Fallback&#xff09;。以下是它们的概念表述&#xff1a; 断路器&#xff08;Circuit Breaker&#xff09;&#xff1a;断路器是一种设计模式&#xff0c;…...

Spring框架学习-详细

文章目录 1. Spring简介1.1 面向接口编程1.2 Spring简介1.3 Spring体系结构 2 Spring IoC - 基于XML2.1 Sping框架部署&#xff08;IoC&#xff09;2.2 Spring IoC使用2.3 IoC和DI2.4 DI依赖注入Spring容器通过反射方法实现属性注入有三种方式1. set方法注入2. 构造器注入 2.5 …...

fatal: fetch-pack: invalid index-pack output

解决方案&#xff1a;git clone --depth1 要克隆的git地址 下载最近一次提交的代码 其他分支的内容都不下载 这样整体下载体量就变小了 执行命令&#xff1a;git clone --depth 1 https://gitlab.scm321.com/ufx/xxxx.git...

相机购买指南

佳能1000D 上市时间&#xff1a;2008年6月 简介&#xff1a; 佳能1000D具有1010万有效像素和7点宽区域自动对焦系统。DIGIC III影像处理器的应用使高ISO画质得到提升。小巧的机身和优质的成像质量可以满足初级用户对旅游便携与高画质的要求。使用了DIGIC III影像处理器&#x…...

c++学习-this指针

1.基本概念 非静态成员函数都会默认传递this指针&#xff08;静态成员函数属于类本身&#xff0c;不属于某个实例对象&#xff09;&#xff0c;方便访问对象对类成员变量和 成员函数。 2.基本使用 编译器实际处理类成员函数&#xff0c;this是第一个隐藏的参数&#xff0c;类…...

Dynamics 365 Finance + Power Automate 自动化凭证审核

&#x1f680; Dynamics 365 Finance Power Automate 自动化凭证审核 &#x1f4d1; 目录 &#x1f680; Dynamics 365 Finance Power Automate 自动化凭证审核1. 依赖 &#x1f527;2. 目标 &#x1f3af;3. 系统架构 &#x1f3d7;️4. 凭证审批全流程 &#x1f6e0;️4.1 …...

React Navive初识

文章目录 搭建开发环境安装 Node、homebrew、Watchman安装 Node安装 homebrew安装 watchman 安装 React Native 的命令行工具&#xff08;react-native-cli&#xff09;创建新项目编译并运行 React Native 应用在 ios 模拟器上运行 调试访问 App 内的开发菜单 搭建开发环境 在…...

手机号在网状态查询接口如何用PHP实现调用?

一、什么是手机号在网状态查询接口 通过精准探测手机号的状态&#xff0c;帮助平台减少此类问题的发生&#xff0c;提供更个性化的服务或进行地域性营销 二、应用场景 1. 金融风控 通过运营商在网态查询接口&#xff0c;金融机构可以核验贷款申请人的手机状态&#xff0c;拦…...

Python入门手册:异常处理

在编程过程中&#xff0c;异常处理是一个非常重要的环节。它可以帮助我们处理程序运行时可能出现的错误和异常情况&#xff0c;确保程序的稳定性和可靠性。Python提供了强大的异常处理机制&#xff0c;使得我们能够优雅地处理各种异常情况。今天&#xff0c;就让我们一起深入学…...

Vue Fragment vs React Fragment

文章目录 前言&#x1f9e9; 一、概念对比&#xff1a;Vue Fragment vs React Fragment&#x1f4e6; 二、使用示例对比✅ Vue 3 中使用 Fragment✅ React 中使用 Fragment &#x1f50d; 三、差异解析1. **使用方式**2. **传递属性&#xff08;如 key&#xff09;**3. **插槽系…...

30.【新型数据架构】-区块链数据架构

30.【新型数据架构】-区块链数据架构:分布式账本,不可篡改性,用于数据溯源 一、区块链数据架构的本质:分布式账本的革新 区块链的核心是分布式账本技术(Distributed Ledger Technology, DLT),它颠覆了传统中心化数据库的架构模式: 去中心化存储: 账本数据不再集中存储…...

动态IP与静态IP:数字世界的“变脸术”与“身份证”

目录 动态IP&#xff1a;互联网的“游牧民族” 静态IP&#xff1a;数字世界的“常驻公民” 动态VS静态&#xff1a;场景驱动的选择逻辑 未来演进&#xff1a;IP地址的“液态化”趋势 选型指南&#xff1a;没有最好&#xff0c;只有最合适 在互联网的海洋里&#xff0c;每个…...

60天python训练计划----day45

DAY 45 Tensorboard使用介绍 知识点回顾&#xff1a; tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战&#xff1a;MLP和CNN模型 之前的内容中&#xff0c;我们在神经网络训练中&#xff0c;为了帮助自己理解&#xff0c;借用了很多的组件&#x…...

figma 和蓝湖 有什么区别

以下是 Figma 和蓝湖的详细对比分析&#xff1a; 核心定位区别 维度Figma蓝湖本质全功能云端设计工具设计协作与交付平台核心功能设计原型协作开发交付设计稿交付标注切图协作设计能力✅ 完整矢量设计工具❌ 无设计功能&#xff08;需导入其他工具文件&#xff09;适用阶段全流…...