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

【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

相关文章:

  • 我爱学算法之——滑动窗口攻克子数组和子串难题(上)
  • 网页复印机:只需一个网址,一键克隆任何网站!(可根据需求生成/优化相关代码)
  • [操作系统] 进程间通信:匿名管道原理与操作
  • js逆向-下载某音乐
  • Spring Cloud Alibaba Nacos 2023.X 配置问题
  • 人工智能_大模型097_TRAE_AI开发工具_企业级项目开发---人工智能工作笔记0242
  • 基于SpringBoot+Vue的大学校园志愿者管理系统+LW示例参考
  • 自动化测试工具-Playwright介绍和快速实例
  • Redis 主从架构与哨兵高可用方案实操
  • 谈谈 TypeScript 中的模块系统,如何使用 ES Modules 和 CommonJS 模块?
  • 高斯数据库和ORCLE、mysql数据库的区别
  • 安装并使用conda(宏观版)
  • 【模拟】从 0 到 1:模拟算法的深度剖析与实战指南
  • /*给你一个字符串s,由若干单词组成,单词前后用一些空格隔开 单词是指由字母组成,不包含任何空字符的最大子字符串*/
  • keepalived的工作原理和脑裂
  • JWT令牌封装类/ 接口的各个请求
  • 黑马跟学.苍穹外卖.Day08
  • 【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书
  • tf1.x和tf2.x在使用上的区别和联系是什么
  • AI 原生 IDE Trae 深度体验:SSHremote 功能助力远程开发与云原生部署
  • 证监会副主席李明:近期将出台深化科创板、创业板改革政策措施
  • “80后”南京大学天文与空间科学学院教授施勇加盟西湖大学
  • 美国考虑让移民上真人秀竞逐公民权,制片人称非现实版《饥饿游戏》
  • 气急败坏!20多名台湾艺人被台当局列为“重点核查对象”
  • 浙江一家长称小学老师打孩子还威胁要从3楼扔下,当地警方已立案
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?