ax0*_*03d 15 kubernetes kube-proxy
kube-proxy有一个名为--proxy-mode的选项,根据帮助消息,这个选项可以是userspace或iptables.(见下文)
# 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.
...
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚用户空间模式在这里意味着什么.
任何人都可以告诉我kube-proxy在用户空间模式下运行时的工作原理是什么?
Rob*_*ley 49
Userspace和iptables指的是实际处理连接转发的内容.在这两种情况下,都会安装本地iptables规则来拦截具有与服务关联的目标IP地址的出站TCP连接.
在用户空间模式下,iptables规则转发到go二进制(kube-proxy)正在侦听连接的本地端口.二进制文件(在用户空间中运行)终止连接,建立与服务后端的新连接,然后将请求转发给后端并将响应转发回本地进程.用户空间模式的一个优点是,因为连接是从应用程序创建的,如果连接被拒绝,应用程序可以重试到不同的后端.
在iptables模式下,安装iptables规则以直接将发往服务的数据包转发到服务的后端.这比将数据包从内核移动到kube-proxy然后再返回内核更有效,因此它可以带来更高的吞吐量和更好的尾部延迟.主要缺点是调试起来比较困难,因为编写日志的本地二进制文件/var/log/kube-proxy必须从内核处理iptables规则中检查日志.
在这两种情况下,都会在您的计算机上运行kube-proxy二进制文件.在用户空间模式下,它将自身作为代理插入; 在iptables模式下,它将配置iptables而不是代理连接本身.相同的二进制文件在两种模式下都有效,并且通过标志或在节点的apiserver中设置注释来切换行为.
| 归档时间: |
|
| 查看次数: |
5806 次 |
| 最近记录: |