【问题标题】:What does userspace mode means in kube-proxy's proxy mode?用户空间模式在 kube-proxy 的代理模式中是什么意思?
【发布时间】:2016-07-05 10:25:50
【问题描述】:

kube-proxy有一个选项叫--proxy-mode,根据帮助信息,这个选项可以是userspaceiptables。(见下文)

# kube-proxy -h
Usage of kube-proxy:
...
      --proxy-mode="": Which proxy mode to use: 'userspace' (older, stable) or 'iptables' (experimental). If blank, look at the Node object on the Kubernetes API and respect the 'net.experimental.kubernetes.io/proxy-mode' annotation if provided.  Otherwise use the best-available proxy (currently userspace, but may change in future versions).  If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy.
...

我不知道用户空间模式在这里是什么意思。

谁能告诉我kube-proxy在userspace模式下运行时的工作原理是什么?

【问题讨论】:

    标签: kubernetes kube-proxy


    【解决方案1】:

    用户空间和 iptables 指的是实际处理连接转发的内容。在这两种情况下,都会安装本地 iptables 规则来拦截目标 IP 地址与服务相关联的出站 TCP 连接。

    在用户空间模式下,iptables 规则转发到本地端口,go 二进制文件(kube-proxy)正在侦听连接。二进制文件(在用户空间中运行)终止连接,为服务建立到后端的新连接,然后将请求转发到后端并响应回本地进程。用户空间模式的一个优点是,因为连接是从应用程序创建的,如果连接被拒绝,应用程序可以重试到不同的后端。

    在 iptables 模式下,安装 iptables 规则以将发往服务的数据包直接转发到服务的后端。这比将数据包从内核移动到 kube-proxy 然后再返回内核更有效,因此它会产生更高的吞吐量和更好的尾部延迟。主要的缺点是它更难以调试,因为您必须检查来自内核处理 iptables 规则的日志,而不是将日志写入/var/log/kube-proxy 的本地二进制文件。

    在这两种情况下,您的机器上都会运行一个 kube-proxy 二进制文件。在用户空间模式下,它将自己插入为代理;在 iptables 模式下,它将配置 iptables 而不是代理连接本身。相同的二进制文件在两种模式下都可以工作,并且通过标志或通过在节点的 apiserver 中设置注释来切换行为。

    【讨论】:

    • ax003d 如果满意,您应该接受答案。
    • @TimoReimann - 这是真的。在 iptables 模式下,如果端点集过期,您最终可能会对某些流量造成黑洞。
    • 该二进制文件是 kube-proxy 二进制文件,它在用户空间中运行(作为集群中每个节点上的容器)。在用户空间终止连接比让内核重写数据包的目标地址效率低,因为数据包在通过网络发送之前多次遍历用户空间/内核边界。
    • kube-proxy 不在暂停二进制文件中。 pause 二进制文件保存共享同一 pod 的所有容器的网络命名空间。 kube-proxy 可以作为独立二进制文件运行,也可以在容器内部运行,具体取决于您的 Kubernetes 分布。
    • 是的,它是可以重试不同后端的代理(无需更改应用程序代码)。因为用户空间代理可以检测到无法连接,所以它可以尝试不同的后端。使用 iptables,数据包会被重写,但不会检查它们是否到达目的地,因此任何重试都需要在应用层完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多