LoadBalancer 类型的 Service工作期间,kube-proxy做了什么?

news/2024/10/21 14:46:11/

kube-proxy 是 Kubernetes 集群中一个重要的组件,负责实现服务的网络代理和负载均衡功能。当创建一个 LoadBalancer 类型的 Service 时,kube-proxy 在整个过程中扮演了关键角色。以下是 kube-proxy 在 LoadBalancer 类型 Service 创建和使用过程中所做的工作:

1. 监听 Service 和 Endpoint 变更

kube-proxy 运行在每个节点上,并持续监听 Kubernetes API 服务器上的 Service 和 Endpoint 对象的变更。

  • 当创建一个 LoadBalancer 类型的 Service 时,kube-proxy 会收到关于这个新 Service 的通知。
  • 当 Service 的 Endpoint 发生变化(例如,匹配的 Pod 增加或减少)时,kube-proxy 也会收到相应的通知。

2. 更新 iptables 或 IPVS 规则

kube-proxy 使用两种主要的方式来处理网络代理和负载均衡:iptables 和 IPVS(IP Virtual Server)。默认情况下,kube-proxy 可能使用 iptables,但可以通过配置切换到 IPVS

a. 使用 iptables
  • kube-proxy 会在每个节点上更新 iptables 规则,将流量从 Service 的 ClusterIP 和端口转发到匹配的 Pod 的 IP 地址和端口。
  • 对于 LoadBalancer 类型的 Servicekube-proxy 还会配置 iptables 规则,将外部流量从负载均衡器的外部 IP 地址和端口转发到 Service 的 ClusterIP 和端口。
b. 使用 IPVS
  • kube-proxy 会在每个节点上维护一个 IPVS 表,将流量从 Service 的 ClusterIP 和端口转发到匹配的 Pod 的 IP 地址和端口。
  • 对于 LoadBalancer 类型的 Servicekube-proxy 还会配置 IPVS 规则,将外部流量从负载均衡器的外部 IP 地址和端口转发到 Service 的 ClusterIP 和端口。

3. 处理外部流量

当外部客户端通过负载均衡器的外部 IP 地址和端口访问服务时,kube-proxy 会根据配置的 iptables 或 IPVS 规则将流量转发到 Service 的 ClusterIP。

a. 内部转发
  • kube-proxy 会将接收到的流量从 Service 的 ClusterIP 转发到匹配的 Pod 的 IP 地址和端口。
  • 这个过程对于外部客户端是透明的,外部客户端只需要知道负载均衡器的外部 IP 地址和端口即可访问服务。

4. 处理内部流量

当集群内部的 Pod 访问 LoadBalancer 类型的 Service 时,kube-proxy 也会根据配置的 iptables 或 IPVS 规则将流量转发到匹配的 Pod。

5. 更新和删除规则

当 Service 或 Endpoint 发生变化时,kube-proxy 会及时更新或删除相应的 iptables 或 IPVS 规则,以确保流量正确地转发到最新的 Pod。

总结

  • 监听变更kube-proxy 持续监听 Service 和 Endpoint 对象的变更。
  • 更新规则kube-proxy 根据变更更新节点上的 iptables 或 IPVS 规则。
  • 处理流量kube-proxy 将外部流量从负载均衡器的外部 IP 地址和端口转发到 Service 的 ClusterIP,并进一步转发到匹配的 Pod。
  • 内部转发kube-proxy 也将集群内部的流量从 Service 的 ClusterIP 转发到匹配的 Pod。
  • 更新和删除kube-proxy 及时更新或删除规则,以应对 Service 或 Endpoint 的变化。

通过这些操作,kube-proxy 确保了 LoadBalancer 类型的 Service 能够正确地处理和转发流量,提供了可靠的网络代理和负载均衡功能。


http://www.ppmy.cn/news/1540819.html

相关文章

CentOS 8配置阿里云yum源

最近正好搞一套3.x体系的大数据技术集群,用CentOS8的系统,发现默认自带的所有yum源貌似无法使用,这里记录一下配置阿里的yum源。后面研究了一下,CentOS 8现在24年,最好是慎用,因为往后的系统升级就没有完全…

【算法】---栈与队列基础

前置准备 数据结构篇:学习过栈与队列这两种基本数据结构 前面会迅速回顾栈与队列的使用 本篇以Java为主, 其它语言可自行对应内置的栈与队列容器。 栈 栈是一种后进先出的容器。 如下图, 栈只有一个开口。 栈顶:栈的开口处&a…

二层交换机的工作原理与局域网设备通信详解

二层交换机(Layer 2 Switch)在计算机网络中是用于连接同一个局域网(LAN)内的设备,它的核心作用是根据MAC 地址来转发数据包,使得同一局域网中的不同设备能够相互通信。其主要功能是通过创建独立的冲突域来优…

5. Node.js Http模块

2.4 Http模块 2.4.1创建Http服务端 //1.导入http模块 let httprequire(http)//2.创建服务对象 let serverhttp.createServer((request,response)>{console.log(request.method) //获取请求方式console.log(request.url) //获取请求url(路径和参数部份)co…

基于SpringBoot的课程辅助教学系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

如何使用Python调用API数据

在信息爆炸的今天,数据成为了新的石油。API(应用程序编程接口)作为获取数据的重要途径,已经深入到软件开发的各个角落。Python,因其简洁的语法和强大的功能,成为了调用API数据的首选语言之一。本文将带你了…

mysql 10 单表访问方法

01.优化的过程 对于我们这些 MySQL 的使用者来说, MySQL 其实就是一个软件,平时用的最多的就是查询功能。DBA时不时丢过来一些慢查询语句让优化,我们如果连查询是怎么执行的都不清楚还优化个毛线,所以是时候掌握真正的技术了。我…

无人机之自动驾驶技术

无人机的自动驾驶技术是一个集成了多学科领域的复杂系统,它使无人机能够在没有人工干预的情况下,自主完成起飞、飞行、执行任务、降落等全过程。 一、技术原理 传感器技术: 无人机通常配备多种传感器,如摄像头、激光雷达、GPS接…