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

【k8s】kube-proxy 工作模式

文章目录

  • Userspace模式:
  • iptables模式:
    • 负载均衡(Load Balancing) LB
      • 轮询(Round Robin):
      • SessionAffinity:
      • 最少连接(Least Connection):
      • IP哈希(IP Hash):
      • SessionAffinity和IP哈希的异同
      • 自定义负载均衡器:
  • IPVS模式:
    • IPVS架构
    • IPVS和iptables的区别
    • 如何启用IPVS模式
    • 支持的负载均衡算法

Kube-proxy是Kubernetes集群中的一个关键组件,它负责实现服务发现和负载均衡。Kube-proxy可以以三种不同的模式工作,分别是:userspace模式、iptables模式和IPVS模式。

Userspace模式:

在Userspace模式下,Kube-proxy通过在主机上创建一个userspace进程来实现服务代理。该进程拦截所有服务流量,并根据服务配置信息将流量转发到后端Pod。这种模式下,kube-proxy会动态更新iptables规则,将服务的虚拟IP地址映射到后端Pod的IP地址。但是,由于每个数据包都要经过userspace进程,因此性能相对较低。

iptables模式:

在iptables模式下,Kube-proxy使用iptables规则实现服务代理。当创建或删除服务时,kube-proxy会动态更新主机上的iptables规则,以将服务的虚拟IP地址映射到后端Pod的IP地址。这种模式下,数据包直接通过内核的iptables规则进行转发,因此性能较高。

缺点
不能提供灵活的LB策略,后端不可用时也不能重试


负载均衡(Load Balancing) LB

Kubernetes(K8s)中的负载均衡(Load Balancing)策略是用于分配网络流量给后端Pod的方法。K8s提供了几种不同的负载均衡策略,可以根据应用程序的需求进行选择。

以下是K8s中常见的负载均衡策略:

轮询(Round Robin):

默认的负载均衡策略,请求按顺序依次分发给可用的后端Pod。每个请求都会按照顺序分配到下一个可用的Pod上。

SessionAffinity:

也称为会话粘滞(Sticky Sessions),该策略根据客户端的会话信息将请求路由到相同的后端Pod上。

这样可以确保来自同一客户端的请求都发送到同一个后端Pod,维护会话的状态。

最少连接(Least Connection):

该策略会将请求发送给当前连接数量最少的后端Pod。

这样可以使负载均衡更加均匀,并避免某些Pod过载的问题。

IP哈希(IP Hash):

根据客户端的IP地址将请求路由到后端Pod。

通过哈希算法,相同IP地址的请求将始终被路由到同一个后端Pod上。

这有助于保持与特定客户端的连接会话。


SessionAffinity和IP哈希的异同

相同点:

  • 目标:SessionAffinity和IP哈希都旨在实现将来自同一客户端的请求路由到相同的后端Pod上,以维护会话状态或连接状态。

不同点:

  1. 粒度:SessionAffinity是基于会话信息进行分配的,而IP哈希是基于客户端的IP地址进行分配的。SessionAffinity更关注于维护特定会话的状态,而IP哈希更关注于维护与特定客户端的连接会话。

  2. 功能:SessionAffinity可以确保来自同一客户端的请求都发送到同一个后端Pod上,即使在负载均衡过程中发生变化。这对于需要保持会话状态的应用程序很有用。而IP哈希则通过哈希算法将相同IP地址的请求路由到同一个后端Pod上,有助于维护与特定客户端的连接状态,但它无法处理客户端IP地址的变化。

  3. 灵活性:SessionAffinity比IP哈希更加灵活,因为它可以基于请求中的任意会话信息进行路由。您可以选择使用CookieHTTP头部或任何其他会话标识符来实现SessionAffinity。而IP哈希则仅依赖于客户端的IP地址进行路由选择。

  4. 适用场景:SessionAffinity适用于需要维护会话状态的应用程序,例如在线购物网站的购物车或用户登录状态。IP哈希适用于需要保持与特定客户端的连接会话状态的应用程序,例如长连接应用或持久化会话。


自定义负载均衡器:

除了Kubernetes提供的默认策略,也可以使用外部负载均衡器来替代或补充K8s内置的负载均衡策略。这样可以利用更丰富的负载均衡功能和灵活性。


IPVS模式:

IP Virtual Server(IPVS)模式是一种高级的负载均衡模式,使用Linux内核的IPVS功能来实现服务代理。

在这种模式下,kube-proxy维护一个IPVS表,根据服务配置信息将流量转发到后端Pod。

相比于iptables模式,IPVS模式在性能和可扩展性方面更为优秀

一般来说,对于大规模的生产环境,IPVS模式是一个更好的选择,因为它具有更好的性能和可扩展性。

IPVS实现了一种基于内核态的L4(传输层)负载均衡方案,能够承载大量并发请求,并分配到不同的后端Pod上。

以下是IPVS模式的详细介绍:

IPVS架构

IPVS通过将流量路由到虚拟服务后端节点(Pod)之间的网络代理,从而实现负载均衡的目的。在K8s中,它是通过kube-proxy代理实现的。

在IPVS架构中,以下组件完成了流量的路由和转发:

  • VIP(Virtual IP Address):虚拟服务的IP地址。
  • Real Server:后端节点的IP地址。
  • Service:定义了一个VIP和端口对应关系的抽象概念。Service对象会自动创建一个VIP并暴露给客户端。
  • Endpoint:定义了一个Service所依赖的真实后端节点的Pod信息。

IPVS和iptables的区别

与iptables模式相比,IPVS具有以下优势:

  1. 更快:系统可处理的请求量更高,性能更优,能够更好地处理高负载环境下的流量。
  2. 更灵活:可以使用多种负载均衡算法(包括Round Robin、Least Connection、Source Hash等),具有更好的扩展性和适应性。
  3. 更可靠:更可靠的连接状态检查和更高效的流量控制。
  4. 更安全:提供了更多的安全机制,例如集群中的计数器机制、防止DDoS攻击等。

如何启用IPVS模式

要启用IPVS模式,需要进行以下几个步骤:

1)在kubelet的启动命令中使用–kube-proxy-mode=ipvs参数。

  kubelet --kube-proxy-mode=ipvs ...

2)在所有节点上安装ipvsadm工具。

  sudo apt-get updatesudo apt-get install ipvsadm

3)创建kube-proxy的ConfigMap保存IPVS代理的配置。

4)使用kubectl replace命令替换kube-proxy的DaemonsSet对象,以便使用新创建的ConfigMap作为配置文件。

  kubectl replace --force -f kube-proxy.yaml

5)重启kube-proxy daemon进程,以便应用新的配置。

支持的负载均衡算法

IPVS支持多种负载均衡算法,从而满足不同场景下的负载均衡策略。包括以下常见的负载均衡算法:

  1. RR(Round Robin):轮询法,平均分配请求到后端节点。

  2. LC(Least Connection):最少连接法,将请求发送到当前连接数最少的节点。

  3. DH(Destination Hashing):根据虚拟服务地址和端口,将请求路由到一组特定的后端节点。特别适合一些需要保持会话一致性的应用场景,例如Web应用中需要将同一个用户的请求路由到同一个后端节点以保持会话状态。

  4. SH(Source Hashing):根据客户端IP地址进行哈希计算,将同一客户端的请求路由到同一个后端节点。

总之,IPVS模式提供了一种高效、可扩展的负载均衡方案,能够满足K8s集群中高并发、高流量等复杂场景下的需求,并且在性能、安全、适应性等方面都具备优秀的表现。

相关文章:

【k8s】kube-proxy 工作模式

文章目录 Userspace模式:iptables模式:负载均衡(Load Balancing) LB轮询(Round Robin):SessionAffinity:最少连接(Least Connection):IP哈希&…...

Linux:Centos9 《下载-安装》

下载 Download (centos.org)https://www.centos.org/download/ 安装 选择第一个安装centos 根据自己需要的语言环境选择即可 这里选择要安装的磁盘,然后点击完成 这里选择第一个就行带有图形化 然后我们去对这两个进行设置就行 这两个地方自己进行设置就行 耐心等…...

数字化管理平台建设实践

在勘察设计行业,各企业加速推进数字化转型。通过管理要素数字化,不断优化内部组织运营效率;通过生产手段数字化、技术产品数字化,提升服务质量,改善客户体验;通过数字化营销,精准对接市场需求&a…...

Linux命令(80)之sort

linux命令之sort 1.sort介绍 linux命令sort用于将文本文件内容以行为单位加以排序;sort命令默认按每行的第一个字符排序,根据首字母的ASCII码值进行升序(从小到大排列)。 sort的默认分隔符是空白(空格和tab),多少空白都算一个分隔符。 2.…...

[k8s] kubectl port-forward 和kubectl expose的区别

kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。 kubectl port-forward kubectl port-forward 命令用于在本地主机和集群内部的 Pod 之间建立一个临时的端口转发通道。 该命令将本地机器上的一个端口绑定到集群内部…...

vscode如何设置文件折叠

随着项目的不断迭代开发,复杂度越来越高,配置文件越来越多,导致vscode左侧文件列表展示非常不直观,幸好可以通过文件折叠来简化展示效果,把同类相关的文件折叠在一块展示,方便查看配置文件。配置好后的效果…...

Linux centos7 bash编程训练

训练编写一段代码,打印输出100之内的明7暗7,同时要求每5个数字打印在一行。 此项训练主要是考察for循环的使用,及条件判断表达式的设置和不同写法的应用。 常用的for循环有四种写法(如打印1-100的整数): …...

k8s集群换ip

1.把/etc/kubernetes/*.conf中所有的旧ip换成新ip cd /etc/kubernetes/ find . -type f | xargs sed -i "s/$oldip/$newip/"2.替换$HOME/.kube/config文件中的旧ip为新ip(注意sudo的话需要改root下的) cd $HOME/.kube/ find . -type f | xargs sed -i "s/$old…...

选择HAL库还是标准库

选择HAL库还是标准库呢?HAL库是趋势,标准库不再升级了,转HAL库是大势所趋。HAL库有优点,也有自身的不足,建议初学者还是从标准库入手。 标准库是单片机开发的基本库,它把“用寄存器实现的功能”写成一个函…...

计算机竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…...

Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向

Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向 1. 效果图2. 源码2.1 line.html2.2line_arrow.html 参考 今天要排查个问题,需要显示多个经纬度点连接成线段的方向,于是尝试下展示。 1. mapbox渲染经…...

kubernetes部署(kubeadmin)

文章目录 1.环境准备2. 安装dokcer3.部署cri-docker4.各个节点安装kubeadm等5.整合kubelet和cri-dockerd配置cri-dockerd配置kubelet 6.初始化集群 1.环境准备 环境和软件版本 OS : ubuntu 20.04 container runtime: docker CE 20.10.22 kubernetes 1.24.17 CRI:cr…...

Leetcode168. Excel表列名称

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题解: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码如下: class Solution {public String convertToTitle(int columnNumber) {StringBuild…...

碎片笔记 | 大模型攻防简报

前言:与传统的AI攻防(后门攻击、对抗样本、投毒攻击等)不同,如今的大模型攻防涉及以下多个方面的内容: 目录 一、大模型的可信问题1.1 虚假内容生成1.2 隐私泄露 二、大模型的安全问题2.1 模型窃取攻击2.2 数据窃取攻击…...

【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码

目录 1 基本子图绘制示例 2 子图网格布局 3 调整子图的尺寸 4 多行多列的子图布局 5 子图之间的共享轴 6 绘制多个子图类型 7 实战: 绘制一个大图,里面包含6个不同类别的子图,不均匀布局。 绘制子图(subplots)…...

【Android常见问题(六)】- UX标注色值带有百分比的使用方法

这里写自定义目录标题 透明度和不透明度的转换对应色值百分比透明度标注 透明度和不透明度的转换 需要不透明度值的,可以自己算:透明度值 不透明度值 100% 如果UI给的视觉稿标注是:颜色#FFFFFF,透明度40% 。那你的计算方式应该…...

Prometheus+Grafana可视化监控【ElasticSearch状态】

文章目录 一、安装Docker二、安装ElasticSearch(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装elasticsearch_exporter七、Grafana添加ElasticSearch监控模板 一、安装Docker 注意:我这里使用之前写好脚本进行安装Docke…...

Java手写堆排序(Heap Sort)和案例

Java手写堆排序(Heap Sort) 1. 思维导图 下面是使用Mermaid代码绘制的思维导图,用于解释堆排序算法的实现思路原理: #mermaid-svg-cFIgsLSm5LOBm5Gl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…...

Linux设备驱动模型之字符设备

Linux设备驱动模型之字符设备 前面我们有介绍到Linux的设备树,这一节我们来介绍一下字符设备驱动。字符设备是在IO传输过程中以字符为单位进行传输的设备,而字符设备驱动则是一段可以驱动字符设备驱动的代码,当前Linux中,字符设备…...

Kafka3.0.0版本——消费者(自动提交 offset)

目录 一、自动提交offset的相关参数二、消费者(自动提交 offset)代码示例 一、自动提交offset的相关参数 官网文档 参数解释 参数描述enable.auto.commi默认值为 true,消费者会自动周期性地向服务器提交偏移量。auto.commit.interval.ms如果…...

【业务功能116】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-公共服务 DNS

kubernetes集群公共服务 DNS 一、软件安装 # yum -y install bind二、软件配置 # vim /etc/named.conf # cat -n /etc/named.conf1 //2 // named.conf3 //4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS5 // server as a caching only…...

马斯洛的动机与人格、需求层次理论

马斯洛是在研究动机(Motivation)时,才提出需求层次作为理论基础来支持动机理论的。所谓动机,就是人类的行为到底是由什么驱动,其实是对人类行为的当下原动力,区别于过去、未来或者是有可能起作用的动力。 …...

TCP/IP网络传输模型及协议

文章目录 前言一、TCP/IP协议二、协议层报文间的封装与拆封1.发送数据2.接收数据前言 TCP/IP模型由OSI七层模型演变而来: 国际标准化组织 1984年提出了模型标准,简称 OSI(Open Systems Interconnection Model)七层模型: 物理层(Physics) :提供机械、电气、功能和过程特性…...

git 推送出现fatal: The remote end hung up unexpectedly解决方案

在使用git更新或提交项目时候出现 "fatal: The remote end hung up unexpectedly " 的报错; 报错的原因原因是推送的文件太大。 下面给出解决方法 方法一: 修改提交缓存大小为500M,或者更大的数字 git config --global http.po…...

Hive内置函数字典

写在前面:HQL同SQL有很多的类似语法,同学熟悉SQL后一般学习起来非常轻松,写一篇文章列举常用函数,方便查找和学习。 1. 执行模式 1.1 Batch Mode 批处理模式 当使用-e或-f选项运行$ HIVE_HOME / bin / hive时,它将以…...

svg 知识点总结

1. 引用 svg&#xff0c;直接用 img 标签 <img src"帐篷.svg" alt"露营">2. 画 svg 各种图形。 矩形 rect圆角矩形 rect圆圈 circle椭圆 ellipse线段 line折线 polyline多边形 polygon路径 path <svg width"200" height"250&qu…...

开源库源码分析:OkHttp源码分析(二)

开源库源码分析&#xff1a;OkHttp源码分析&#xff08;二&#xff09; 导言 上一篇文章中我们已经分析到了OkHttp对于网络请求采取了责任链模式&#xff0c;所谓责任链模式就是有多个对象都有机会处理请求&#xff0c;从而避免请求发送者和接收者之间的紧密耦合关系。这篇文章…...

校园地理信息系统的设计与实现

校园地理信息系统的设计与实现 摘 要 与传统的地图相比较&#xff0c;地理信息系统有着不可比拟的优势&#xff0c;信息量大&#xff0c;切换方便&#xff0c;可扩展性强。本文阐述了研究地理信息系统的背景、目的、方法&#xff0c;介绍了一个实用的、方便可靠的校园地理信息…...

Vulnhub实战-prime1

前言 VulnHub 是一个面向信息安全爱好者和专业人士的虚拟机&#xff08;VM&#xff09;漏洞测试平台。它提供了一系列特制的漏洞测试虚拟机镜像&#xff0c;供用户通过攻击和漏洞利用的练习来提升自己的安全技能。本次&#xff0c;我们本次测试的是prime1。 一、主机发现和端…...

Scala学习笔记

Scala学习笔记 Scala笔记一、学习Scala的目的二、Scala的基本概念2.1 JDK1.8版本的新特性2.2 Scala的运行机制 三、Scala的基本语法3.1 Scala中输出语句、键盘输入、注释语法3.1.1 Scala注释三种&#xff0c;和Java一模一样的3.1.2 Scala键盘输入3.1.3 Scala输出 3.2 Scala变量…...

单机网页游戏网站/可以免费发帖的网站

数据统计&#xff0c;截至3月21日&#xff0c;电力板块已有16家上市公司发布了2016年年报&#xff0c;业绩两极分化趋势明显。其中&#xff0c;梅雁吉祥、银星能源等水电、新能源发电公司业绩翻倍&#xff0c;深圳能源、大唐发电等火电公司净利润下滑明显。 水电新能源发电表现…...

wordpress导出导入/凡科网

系统重装后&#xff0c;想把D盘的软件添加快捷方式以下以anaconda3为例&#xff0c;提供两种方法方法一&#xff1a;方法二&#xff1a;1. 添加环境变量D:\Anaconda3 (有Python.exe,Pythonw.exe等文件)D:\Anaconda3\Scripts (有pip.exe,jupyter.exe,jupyter-notebook.exe等文件…...

贵港市城乡住房建设厅网站/整合营销的特点有哪些

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;超越昨天的自己系列&#xff08;7&#xff0…...

icp备案要多少钱/标题优化seo

javaone目前&#xff0c;成千上万的Java开发人员正在前往旧金山参加今年的JavaOne和OpenWorld会议。 会议于10月25日&#xff08;星期日&#xff09;开始&#xff0c;预计将吸引6万名与会者&#xff0c;并持续到10月29日。 那些没有拿到75美元的JavaOne主旨票或2050美元的全会…...

wordpress命令安装目录结构/今日最新财经新闻

相信很多的码友刚接触统计分析模块功能时都会遇到很多的问题&#xff0c;本人主要遇到的问题是数据封装方式不对&#xff0c;统计分析模块跟其他方式不一样的是&#xff0c;我们不能单纯的返回列表&#xff0c;比如说我们要统计两个学生的4年里成绩变化&#xff0c;我们不能分别…...

wordpress命令安装/株洲seo排名

撰文&#xff1a;Tim Beiko编辑&#xff1a;南风以太坊向 PoS 的过渡——合并——即将到来&#xff1a;devnets (开发网络) 正在被建立起来&#xff0c;规范正在被敲定&#xff0c;向社区拓展也已经正式开始。合并被设计为对以太坊终端用户、智能合约和 dapps 的影响最小化。尽…...