在K8S中,kube-proxy的工作模式是什么?

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 在K8S中,kube-proxy的工作模式是什么?

kube-proxy 在 Kubernetes 集群中负责实现 Service 的网络代理和负载均衡功能,支持三种不同的工作模式:

  1. Userspace 模式(已过时):
  • 在早期的 Kubernetes 版本中(1.2 之前),kube-proxy 默认使用 Userspace 模式。
  • 在此模式下,kube-proxy 作为一个用户空间进程运行,为每个 Service 创建一个监听端口。
  • 当流量到达 Service 的 Cluster IP 时,iptables 规则会将其重定向到 kube-proxy 监听的端口上。
  • kube-proxy 接收到请求后,根据负载均衡算法选择合适的 Pod 并与其建立连接,将请求转发到选定的 Pod。
  • 用户空间模式存在的问题是由于涉及从内核空间到用户空间的上下文切换,导致额外的数据拷贝和较低的性能。
  1. iptables 模式:
  • 自 Kubernetes 1.2 版本起,iptables 模式成为默认模式。
  • 在该模式下,kube-proxy 不再直接接收和转发流量,而是通过实时监控 API Server 中 Service 和 Endpoint 的变化,并动态更新节点上的 iptables 规则来实现负载均衡。
  • 流量直接通过内核空间的 iptables 规则从客户端路由到目标 Pod,相比 Userspace 模式减少了上下文切换和数据拷贝,提高了性能。
  • 缺点是在服务数量非常多的情况下,iptables 规则集可能会变得庞大,非增量式的更新可能导致规则刷新时有一定的延迟。
  1. IPVS 模式:
  • 从 Kubernetes 1.8 版本开始支持试验性 IPVS 模式,并在 1.11 版本中作为正式功能推出。
  • IPVS(IP Virtual Server)是 Linux 内核中的另一种负载均衡解决方案,相比于 iptables 更高效,尤其在大规模场景下。
  • IPVS 模式下的 kube-proxy 也是通过监控 API Server 中的服务和端点事件,动态配置 IPVS 规则来进行负载均衡。
  • IPVS 模式提供了更好的可扩展性和更高效的连接跟踪及会话保持能力,适合更高负载和更多并发连接的场景。

综上所述,在现代 Kubernetes 集群中,通常推荐使用 IPVS 模式,因为它能够提供更高的性能和更精细的负载均衡控制。不过,具体选择哪种模式取决于集群管理员对性能、稳定性及运维复杂性的考量。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes 负载均衡 算法
k8s学习--kube-proxy的三种工作模式详细解释
k8s学习--kube-proxy的三种工作模式详细解释
171 0
|
4月前
|
存储 Kubernetes 前端开发
k8s部署DataEase1.16.0cluster模式
k8s部署DataEase1.16.0cluster模式
|
4月前
|
Kubernetes 负载均衡 API
在K8S中,Kube-proxy有什么功能?
在K8S中,Kube-proxy有什么功能?
|
4月前
|
存储 Kubernetes 负载均衡
在K8S中,Kube-Proxy为什么使用ipvs,而不使用iptables?
在K8S中,Kube-Proxy为什么使用ipvs,而不使用iptables?
|
4月前
|
存储 Kubernetes 安全
在K8S中,你用的flannel是哪个工作模式及fannel的底层原理如何实现数据报文转发的?
在K8S中,你用的flannel是哪个工作模式及fannel的底层原理如何实现数据报文转发的?
|
4月前
|
Kubernetes Linux 容器
K8S中,flannel有几种模式?
K8S中,flannel有几种模式?
|
4月前
|
存储 Kubernetes 容器
在k8S中,所支持的存储供应模式有哪些?
在k8S中,所支持的存储供应模式有哪些?
|
4月前
|
存储 Kubernetes 负载均衡
在K8S中,kube-proxy ipvs 和 iptables 有何异同?
在K8S中,kube-proxy ipvs 和 iptables 有何异同?
|
4月前
|
Kubernetes 负载均衡 API
在K8S中,kube-proxy ipvs 原理是什么?
在K8S中,kube-proxy ipvs 原理是什么?
|
4月前
|
Kubernetes 负载均衡 API
在K8S中,kube-proxy iptables 原理是什么?
在K8S中,kube-proxy iptables 原理是什么?