Kubernetes详解(三十)——Service代理方式分类

今天继续给大家介绍Linux运维相关知识,本文主要内容是Service代理方式分类。
Service资源对象存在端口代理的功能,能够实现对Pod资源访问进行代理。kube-proxy将请求代理至相应端点的方式有以下三种:userspace代理、iptables代理和ipvs代理。下面,我就对这三种代理模式进行详细讲解。

一、userspace代理模式

userspace是Linux操作系统的用户空间。在这种模式下,kube-proxy负责跟踪API Server上Service和Endpoints对象的变动,并据此调节Service资源。对于每个Service对象,kube-proxy会随机打开一个本地端口,任何到此端口的链接请求都会被代理至当前Service资源的后端Pod上。具体发送至哪个Pod由Service的调度算法决定,其默认的调度算法是轮询。
userspace模式下的Service代理图如下所示:
在这里插入图片描述
从上图可以看出,请求到达Service后,会被转发到内核空间,经由套接字传送至用户空间的kube-proxy,然后又会被其送回内核空间,并调度到Pod上。这种转发方式在Kubernetes1.1版本之前是默认的转发策略,但是由于其传输效率太低,因此被后续的版本弃用。

二、iptables代理模式

在iptables代理模式中,也是kube-proxy负责跟踪API Server上Service和Endpoints对象的变动,并据此作出Service资源的变动。对于每个Service对象,会创建Iptables规则直接捕获到达Cluster IP和Port的流量,并将其发送到Service的后端。对于每个Endpoints对象,Service资源会为其创建iptables规则并关联至挑选的后端Pod资源。
iptables模式的代理规则是请求到达service后,被service的iptables规则进行调度和目标地址转换后发送至集群的Pod对象上。iptables代理图如下所示:
在这里插入图片描述
相对于namespace模式来说,iptables模式无需将流量在用户空间和内核空间之间来回切换,因此更加高效和可靠。但是其缺点在于iptables模型不会在Pod资源无响应时进行重定向,而userspace模式可以。

三、ipvs代理模式

在ipvs代理模式下,kube-proxy负责跟踪API Server上的Endpoints资源对象的变动,据此来调动netlink接口来创建ipvs规则,并确保和API Server中的变动保持同步。在这种模式下流量的调度功能由ipvs实现,其余的功能由iptables实现。ipvs代理模式图如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值