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

【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.kler.cn/a/591231.html

相关文章:

  • 蓝桥杯备赛(基础语法4)
  • 荣耀手机怎么录制屏幕?屏幕录制后为视频加水印更有“安全感”
  • 科普类——双目立体视觉与 RGBD 相机的简单对比
  • python爬虫Scrapy(5)之CrawlSpider
  • MySQL启动报错/var/lib/mysql‘ for UNIX socket file don‘t exists.
  • 较为完善的搜索函数
  • React学习笔记18
  • 鸿蒙NEXT开发问题大全(不断更新中.....)
  • B站关键词排名优化:打造引爆流量的引擎
  • 如何理解std::promise和std::future
  • spring-ai-alibaba-examples项目编译运行
  • 总结Solidity 的数据类型
  • 【Lava SE】认识异常
  • 注解与设计模式:解锁Java编程的魔法与艺术!
  • RocketMQ 性能优化与调优策略(二)
  • Diffie-Hellman 加密协议介绍 (DH,DHE,ECDHE)
  • 路由器安全研究|D- Link DIR-823G v1.02 B05 复现与利用思路
  • Git:速查手册
  • K8S学习之前站五:清理docker的overlay2 目录
  • 解决vscode连接失败问题--ssh试图写入的管道不存在