首页 > 其他分享 >K8S之ipvs负载均衡原理

K8S之ipvs负载均衡原理

时间:2023-09-08 14:33:52浏览次数:43  
标签:iptables 负载 IP 地址 流量 ipvs Pod K8S

1、iptables 、ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为Linux 内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载均衡器。ipvs可以将基于TCP和UDP的服务请求转发到真实服务器上,并使真实服务器的服务在单个IP 地址上显示为虚拟服务。

2、iptables 模式在 v1.1 中就添加支持了,从 v1.2版本开始 iptables 就是 kube-proxy 默认的操作模式,

ipvs 和iptables 都是基于netfilter的。ipvs 会使用 iptables 进行包过滤、SNAT、masquared。

具体来说,ipvs 将使用ipset来存储需要DROP或masquared的流量的源或目标地址,
以确保 iptables 规则的数量是恒定的,这样我们就不需要关心我们有多少服务了。
3、启动ipvs的要求:
k8s版本 >= v1.11
使用ipvs需要安装相应的工具来处理”yum install ipset ipvsadm -y“
确保 ipvs已经加载内核模块, ip_vs、ip_vs_rr、ip_vs_wrr、ip_vs_sh、
nf_conntrack_ipv4。如果这些内核模块不加载,当kube-proxy启动后,会退回到iptables模式。

4、ipvs kube-proxy原理分析:

iptables规则表的DNAT->SNAT方式来处理外部客户端到k8s集群pod内的流量

DNAT 规则:用于将外部客户端发起的请求转发到 K8s 集群中的 Pod。这个规则将通过目的 IP 地址和端口号来匹配外部客户端请求,并将其目标地址和端口修改为相应的 Pod IP 地址和 Pod 端口。

SNAT 规则:用于修改返回流量中的源 IP 为 K8s 集群中的节点 IP。这个规则将通过目的 IP 地址和端口号来匹配返回流量,并将其源 IP 修改为相应的节点 IP。

通俗理解为:外部客户端通过公共 IP 地址和端口(Public IP:Port)发起请求。当流量到达 Kubernetes 集群时,iptables DNAT 规则将目标 IP 地址和端口修改为对应的 Pod IP 地址和 Pod 端口,实现请求的转发。返回的响应流量经过iptables SNAT 规则,源 IP 地址被修改为节点的 IP 地址,确保返回流量正确路由回外部客户端。

ipvs 则是对对虚拟服务(也称为 VIP,即 Virtual IP)进行管理,为了让内核识别 VIP,Kubernetes 会将 Service 的 Cluster IP 绑定到一个虚拟网卡(kube-ipvs0)上。每个 Service 都有一个 Cluster IP,这是一个虚拟 IP 地址,用于代表该 Service。这个 Cluster IP 是负责转发流量到后端 Pod 的 IPVS 虚拟服务的目标地址。

 

标签:iptables,负载,IP,地址,流量,ipvs,Pod,K8S
From: https://www.cnblogs.com/libruce/p/17687511.html

相关文章

  • 部署K8S 1.28版本集群部署(基于Containerd容器运行)
    1、主机配置hostnamectlset-hostnamek8s-masterecho"172.21.131.89k8s-master">>/etc/hostssystemctlstopfirewalld&&systemctldisable firewalldsetenforce0&&sed-i"s/SELINUX=enforcing/SELINUX=disabled/g"/etc/......
  • k8s部署的redis集群数据迁移
    redis集群数据迁移系统版本CentOS7.9k8s版本v1.19.16redis版本6.2.6源:单点redis数据目的:redis集群,3主3从1.查看集群信息[root@k8s-master01redis]#kubectl-nopsgetpo-owide|grepredisredis-01/1Running013m100.84.1......
  • mindxdl异构安装k8s
    --------------------------------#关闭安装驱动和固件sed-i.bak's/.*driver.yml/#&/g'/root/ascend-deployer-5.0.RC3.B009/ascend_deployer/playbooks/check.yamlsed-i.bak's/.*npu/#&/g'/root/ascend-deployer-5.0.RC3.B009/ascend_deployer/......
  • Linux基础38 负载均衡会话保持(redis配session共享), 四层负载均衡, nginx端口转发
    一、负载均衡会话保持当用户访问页面登录后,会在服务器上生成一个session文件,并且返回给浏览器一个session_id内容的cookie,cookie会存在浏览器中,下一次访问cookie会携带session_id来到服务器验证,没有变化则说明是登录状态,不需要重新登录1.session共享的方法1.把session文件保......
  • 从 Rancher 学习 K8s - Rancher 的基础使用
    舞台环境Rancherv2.6.9K8sv1.24.16如果你不具备该环境,可以移步使用Rancher安装K8s集群查看。本文适合已经了解了k8s基础概念,想使用rancher管理学习k8s的人群。创建Nginx负载Pod用于运行一个容器或者多个容器,大多数的场景使用单容器就可以了,这里我们部署一......
  • k8s 入门到实战--部署应用到 k8s
    背景最近这这段时间更新了一些k8s相关的博客和视频,也收到了一些反馈;大概分为这几类:公司已经经历过服务化改造了,但还未接触过云原生。公司部分应用进行了云原生改造,但大部分工作是由基础架构和运维部门推动的,自己只是作为开发并不了解其中的细节,甚至k8s也接触不到。还处......
  • k8s之PV、PVC
    1.前言在k8s中,管理存储一直就是管理计算实例的问题。PersistentVolume系统为用户和集群管理人员提供了两个API,这两个API为用户屏蔽了底层存储的细节。这两个API对象就是PersistentVolume和PersistentVolumeClaim。2.介绍PV是集群中的存储资源,由管理员提供或者通过storagecl......
  • k8s Pod 干扰
    Pod优先级与抢占Pod可以有优先级。优先级表示一个Pod相对于其他Pod的重要性。如果一个Pod无法被调度,调度器会将该Pod转入Pending状态并为其启动“抢占”过程,调度器会在集群中尝试通过删除某节点上的一个或多个低优先级的Pod,让节点能够满足待调度Pod的运行条件,并将待调度......
  • nginx负载均衡结构示例
    Linux系统-部署-运维系列导航 使用说明nginx负载均衡需要使用stream模块,支持HTTP与TCP服务。此处仅说明负载均衡的配置结构,具体参数请自行查阅相关资料。 Nginx负载均衡策略nginx自有策略轮询(默认)权重(weight)IP地址哈希(ip_hash)最小连接数(least_conn......
  • 浅分析安防视频监控平台EasyCVR视频融合平台接入大量设备后如何维持负载均衡
    安防视频监控平台EasyCVR视频融合平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,也具备接入AI智能分......