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

kube-proxy

kube-proxy

kube-proxy是什么

Kubernetes 集群中的一个核心网络组件,它运行在集群的每个节点(Node)上,主要负责实现 Kubernetes 的服务(Service) 网络抽象。负责将Service的虚拟IP流量精准转发到后端Pod,是网络通信的关键桥梁。

kube-proxy的作用

服务发现

Service 定义了一个逻辑集合和访问该集合的策略。kube-proxy 监听 Kubernetes API Server,持续跟踪 Service 对象及其关联的 Pod(通过标签选择器 selector 匹配)的变动

Service 后端的 Pod 列表发生变化(例如,扩容增加 Pod,或某个 Pod 崩溃被替换)时,kube-proxy 会立即感知到这些变化,并在本节点上更新相应的网络转发规则。这确保了服务发现是动态且实时的。

负载均衡

kube-proxy 在将流量从 Service的虚拟 IP 和端口转发到后端 Pod 的真实 IP 和端口时,会实施负载均衡策略。

kube-proxy 在每个节点上实现了本地的负载均衡,将请求分发到该服务的所有健康 Pod。

Service 类型为 NodePortLoadBalancer 时,kube-proxy 确保了从集群外部通过节点 IP 和端口访问服务的流量也能被正确地负载均衡到后端 Pod。

kube-proxy工作原理

kube-proxy 本身不直接处理数据包的转发,而是通过配置节点上的网络规则来实现流量的重定向在这里插入图片描述

iptables模式

它通过监听api sever 中sever和Endpoint的变化。一但发生变更,kube-proxy 就调用 iptables 命令,在节点的 iptables 规则链(主要是 nat 表)中动态地添加、更新或删除规则。当数据包到达 Service 的 ClusterIP:Port 时,iptables 规则会将其目标 IP 和端口修改为某个选中的后端 Pod 的 IP:Port。

ipvs 模式
  1. 监听API Server
    • kube-proxy通过List-Watch机制监听Kubernetes API Server上的Service和Endpoints资源的变化。
    • 当有新的Service或Endpoints被创建、更新或删除时,API Server会通知kube-proxy。
  2. 获取服务和端点信息
    • kube-proxy接收到通知后,会从API Server获取最新的Service和Endpoints信息。
    • Service信息包括虚拟IP(ClusterIP)和端口。
    • Endpoints信息包括后端Pod的IP地址和端口。
  3. 创建虚拟服务器
    • kube-proxy通过Netlink接口调用IPVS模块,创建一个新的虚拟服务器,设置其VIP和端口为Service的ClusterIP和端口。
  4. 添加真实服务器
    • 对于每个后端Pod,kube-proxy通过Netlink接口将Pod的IP和端口作为真实服务器添加到虚拟服务器中。
    • 每个真实服务器还可以设置权重,以支持加权负载均衡。
  5. 更新哈希表
    • IPVS模块内部使用哈希表来管理连接。当一个新的连接到达虚拟服务器时,IPVS会根据调度算法选择一个真实服务器,并将连接信息存储在哈希表中。
    • 哈希表的键通常是五元组(源IP、源端口、目标IP、目标端口、协议),值是对应的真实服务器信息。
  6. 流量转发
    • 当客户端请求到达虚拟服务器时,IPVS根据哈希表中的信息和调度算法选择一个真实服务器,并将请求转发到该真实服务器。
    • 反向流量也会通过同样的机制返回给客户端。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

userspace 模式

kube-proxy 自身在用户空间监听 Service 的端口。当有连接到达时,kube-proxy 进程选择一个后端 Pod,然后自己作为代理,将数据在用户空间接收后再转发出去。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

http://www.dtcms.com/a/358347.html

相关文章:

  • 【系列09】端侧AI:构建与部署高效的本地化AI模型 第8章:移动端部署实战 - Android
  • 宽带有丢包,重传高的情况怎么优化
  • w嵌入式分享合集125
  • day43-Ansible-PlayBook
  • web渗透PHP反序列化漏洞
  • HunyuanVideo-Foley - AI视频配音 根据视频和文本描述生成逼真的电影级音频 支持50系显卡 一键整合包下载
  • (三)Python语法基础(实战)
  • LabVIEW测斜设备承压试验台
  • pip 镜像源配置(清华/阿里/豆瓣)详解
  • 智瞰风评 - 基于大语言模型的个人征信报告风险分析师
  • vscode新建终端默认不是cmd问题
  • 无人机也能称重?电力巡检称重传感器安装与使用指南
  • macOS 15.6 ARM golang debug 问题
  • 如何评价 Kimi 开源的推理平台 Mooncake?对行业有什么影响?
  • 从零实现一个可扩展的规则解析引擎 —— 支持 AND/OR 优先级、短路求值与多类型运算符
  • Vue2之axios在脚手架中的使用以及前后端交互
  • RabbitMQ 和 Kafka
  • 函数(2)
  • 并发编程——08 Semaphore源码分析
  • 免费在线图片合成视频工具 ,完全免费
  • 文件夹命名软件,批量操作超简单
  • 美团8-30:编程题
  • 深入解析前缀和算法:原理、实现与应用
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(六)
  • react组件
  • C++优先级队列priority_queue的模拟实现
  • Trailing Zeros (计算 1 ~ n 中质因子 p 的数量)
  • Java全栈开发面试实战:从基础到高并发的全面解析
  • Redis数据类型概览:除了五大基础类型还有哪些?
  • leetcode643. 子数组最大平均数 I