【Kubernetes】Kube Proxy 如何帮助 Pod 之间通信?Kube-Proxy 实践案例

kube-proxy 主要通过管理网络规则和流量转发来帮助 Pod 之间进行通信,具体方式如下:

1. 维护 Service 相关的网络规则

  • kube-proxy 监听 API Server,当 Service 或 Endpoints 发生变化时,动态更新网络规则。
  • 确保流量能正确地从 Service 发送到对应的 Pod。

2. 支持三种模式进行流量转发

  • iptables 模式(默认)

    • kube-proxy 通过 iptables 规则拦截访问 Service 的流量,并将其 NAT 转发到后端 Pod。
    • 适用于大部分场景,性能较好,但规则过多时管理会变复杂。
  • ipvs 模式

    • 使用 Linux 内核 IPVS(IP Virtual Server)机制进行流量转发,性能更优,支持更多的负载均衡算法。
    • 适合大规模集群,但需要内核支持 ipvs 模块。
  • userspace 模式(已废弃)

    • kube-proxy 进程直接处理流量,再转发到 Pod,性能较差,不推荐使用。

3. 提供 Service 访问能力

  • 通过 ClusterIP 访问:
    • Pod 访问 Service 时,kube-proxy 负责将流量转发到后端 Pod。
  • 通过 NodePort 访问:
    • kube-proxy 监听 Node 上的端口,并将外部流量转发到 Service。
  • 通过 LoadBalancer 访问:
    • 结合云厂商的负载均衡服务,将流量分发到集群内的 Node。

4. 实现 Pod 之间的跨节点通信

  • kube-proxy 结合 CNI(如 Flannel、Calico)实现不同 Node 上 Pod 之间的通信。
  • 确保访问 Service 时,即使后端 Pod 在不同的 Node 上,也能正确转发流量。

企业级案例:电商平台的流量转发(Kube-Proxy 实践)

场景描述

某电商公司使用 Kubernetes 部署了一个高并发的购物平台,包含多个微服务,如:

  • frontend(前端服务,用户访问入口)
  • cart-service(购物车服务)
  • order-service(订单服务)
  • payment-service(支付服务)

这些服务需要通过 kube-proxy 实现流量转发,确保用户下单时,各个服务能正确通信。


1. 购物车访问订单服务的通信

用户流程

  1. 用户在 frontend 添加商品到购物车。
  2. frontend 调用 cart-service,存储购物信息。
  3. 用户点击“下单”,cart-service 需要调用 order-service 处理订单。

Kubernetes 部署情况

  • cart-serviceorder-service 部署在不同的 Node 上。
  • order-service 通过 Kubernetes Service 暴露,ClusterIP 为 10.96.0.10
  • kube-proxy 负责管理 cart-service 访问 order-service 的流量。

Kube-Proxy 作用

  • kube-proxy 监听 order-service 的 Endpoints,确定后端可用的 Pod。
  • 使用 iptablesipvs 规则,让 cart-service 访问 10.96.0.10 时,流量自动转发到 order-service 的 Pod。

2. 订单服务调用支付服务(跨节点流量)

用户流程

  1. order-service 处理订单后,需要调用 payment-service 进行支付。
  2. payment-service 可能运行在不同的 Node 上。
  3. 需要保证流量能跨节点转发,防止单点失败。

Kube-Proxy 作用

  • 维护 payment-service 的 Service 规则,让 order-service 访问 10.96.0.20(ClusterIP)时,自动转发到某个 payment-service Pod。
  • 如果 payment-service 的某个 Pod 故障,kube-proxy 会自动调整流量,转发到健康的 Pod,保证支付功能正常。

3. 用户外部访问购物平台(NodePort 模式)

场景

  • 用户需要访问 frontend,但 frontend 只能通过 Service 暴露。
  • 由于 frontend 需要被外网访问,我们使用 NodePort Service。

Kube-Proxy 作用

  • kube-proxy 在每个 Node 上开启一个高位端口(如 30080)。
  • 当用户访问 NodeIP:30080 时,kube-proxy 自动将流量转发到 frontend Pod。
  • 如果 frontend Pod 不在该 Node 上,kube-proxy 会通过 iptablesipvs 规则,转发流量到正确的 Node。

总结

需求Kube-Proxy 解决方案
购物车服务访问订单服务kube-proxy 通过 iptables/ipvs 规则,管理 ClusterIP 转发
订单服务调用支付服务kube-proxy 确保跨节点 Pod 之间的流量转发
用户访问前端服务kube-proxy 通过 NodePort 让用户外部访问

https://github.com/0voice

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

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

相关文章

平衡树的模拟实现

一.平衡树的介绍 平衡树是以二叉树结构为基础,同时引入了平衡因子进行了限制,以保证树的结点之间的高度差小于等于1,在插入删除结点时通过旋转的方法保持高度相对平衡,从而提高搜索等效率。 二.代码实现 1.平衡树结点 平衡树结…

JavaScript基础-获取元素

在Web开发中,使用JavaScript动态地访问和操作网页上的元素是一项基本技能。通过获取页面上的特定元素,我们可以对其进行各种操作,比如修改内容、样式或属性等。本文将详细介绍几种获取DOM元素的方法,并探讨它们的特点及适用场景。…

为什么要用(:deep、::v-deep、>>>)样式穿透

在 Vue.js 中,当你使用像 Element UI 这样的 UI 库时,它们的样式通常是全局的,即使你在组件中使用了 scoped 样式(为什么要用scoped),仍然可能需要对这些全局样式进行修改。 为了实现这一点,样…

MySQL中的事务隔离级别有哪些

MySQL中的事务隔离级别 一、事务并发问题二、MySQL 事务隔离级别1. READ UNCOMMITTED(读未提交)2. READ COMMITTED(读已提交)3. REPEATABLE READ(可重复读)(MySQL 默认级别)4. SERIA…

Python----计算机视觉处理(Opencv:图像镜像旋转)

一、图像镜像旋转 图像的旋转是围绕一个特定点进行的,而图像的镜像旋转则是围绕坐标轴进行的。图像镜像旋转,也可 以叫做图像翻转,分为水平翻转、垂直翻转、水平垂直翻转三种。 通俗的理解为,当以图片的中垂线为x轴和y轴时&#x…

hibernate 自动生成数据库表和java类 字段顺序不一致 这导致添加数据库数据时 异常

hibernate 自动生成的数据库表和java类 字段顺序不一致 这导致该书写方式添加数据库数据时 异常 User user new User( null, username, email, phone, passwordEncoder.encode(password) ); return userRepository.save(user);Hibernate 默认不会保证数据库表字段的顺序与 Ja…

python|结构的模式匹配match|同步迭代

在 Python 中,模式匹配(Pattern Matching) 是一种强大的功能,用于根据数据的结构或内容进行匹配和处理。Python 3.10 引入了 match 语句,使得模式匹配更加直观和灵活。模式匹配可以用于处理复杂的数据结构,…

博客图床 VsCode + PigGo + 阿里云OSS

关键字 写博客,图床,VsCode,PigGo,阿里云OSS 背景环境 我想把我在本地写的markdown文档直接搬到CSDN上和博客园上,但是图片上传遇到了问题。我需要手动到不同平台上传文件,非常耗费时间和经历。 为了解决…

路由器安全研究:D-Link DIR-823G v1.02 B05 复现与利用思路

前言 D-Link DIR-823G v1.02 B05存在命令注入漏洞,攻击者可以通过POST的方式往 /HNAP1发送精心构造的请求,执行任意的操作系统命令。 漏洞分析 binwalk提取固件,成功获取到固件。 现在我们已经进入到应用里了,那么我们在进行分析…

c++ 类和对象 —— 下 【复习总结】

1. 深入构造函数 1.1 函数体赋值 前文我们提到,创建对象时,编译器会调用构造函数给成员变量赋值。但这并不能称为对对象中成员变量的初始化。因为初始化只能初始化一次,但构造函数体内可以多次赋值。构造函数体中语句只能称为赋初值 那么&…

【量化科普】Volatility,波动率

【量化科普】Volatility,波动率 🚀量化软件开通 🚀量化实战教程 在金融市场中,波动率(Volatility)是衡量资产价格变动幅度的一个重要指标。它反映了资产价格的稳定性和风险水平。高波动率意味着资产价格…

PCIe(Peripheral Component Interconnect Express)详解

一、PCIe的定义与核心特性 PCIe(外设组件互连高速总线)是一种 高速串行点对点通信协议,用于连接计算机内部的高性能外设。它取代了传统的PCI、PCI-X和AGP总线,凭借其高带宽、低延迟和可扩展性,成为现代计算机系统的核…

idea 编译打包nacos2.0.3源码,生成可执行jar 包常见问题

目录 问题1 问题2 问题3 问题4 简单记录一下nacos2.0.3,编译打包的步骤,首先下载源码,免积分下载: nacos源码: https://download.csdn.net/download/fyihdg/90461118 protoc 安装包 https://download.csdn.net…

通过 TTL 识别操作系统的原理详解

TTL 的工作原理 TTL(Time to Live,生存时间)是网络中用于控制数据包生命周期的一个关键参数。它通过限制数据包在网络中可以经过的最大路由跳数(或最大转发时间),确保数据包不会在网络中无休止地转发。TTL…

总结Solidity 的数据类型

数据类型 在 Solidity 中,类型系统非常丰富,主要分为 值类型(Value Types)和 引用类型(Reference Types)。此外,还有一些特殊类型和全局变量。 一.值类型 布尔型(bool&#xff09…

Android audio(8)-native音频服务的启动与协作(audiopolicyservice和audioflinger)

音频策略的构建 1、概述 2、AudiopolicyService 2.1 任务 2.2 启动流程 2.2.1 加载audio_policy.conf(xml)配置文件 2.2.2 初始化各种音频流对应的音量调节点 2.2.3 加载audio policy硬件抽象库 2.2.4设置输出设备 ps:audiopatch流程简介 2.2.5打开输出设…

DeepSeek:从入门到精通

DeepSeek是什么? DeepSeek是一家专注通用人工智能(AGI)的中国科技公司,主攻大模型研发与应 用。DeepSeek-R1是其开源的推理模型,擅长处理复杂任务且可免费商用。 Deepseek可以做什么? 直接面向用户或者支持…

【一起来学kubernetes】17、Configmap使用详解

前言概述核心特性创建 ConfigMap使用 ConfigMap1. **环境变量**2. **Volume 挂载**3. **命令行参数** 更新与热重载Docker容器中Java服务使用Configmap**一、通过环境变量注入****步骤说明****示例配置** **二、通过 Volume 挂载配置文件****步骤说明****示例配置** **三、动态…

【八股文】从浏览器输入一个url到服务器的流程

1.url解析与DNS解析 浏览器解析用户输入的URL,提取协议(HTTP\HTTPS)、域名、端口及路径等信息 浏览器首先检查本地DNS缓存和系统DNS缓存,若未命中,查询本地hosts文件 最后递归查询向本地DNS服务器发起请求&#xff…

网络空间安全(34)安全防御体系

前言 安全防御体系是一个多层次、多维度的系统,旨在保护组织或个人的信息资产免受各种网络攻击和威胁。 一、技术层面 网络边界防御 防火墙:部署在网络边界,通过设定规则允许或阻止特定流量的进出,保护内部网络不受外部攻击。入侵…