diff --git a/content/zh-cn/docs/reference/networking/virtual-ips.md b/content/zh-cn/docs/reference/networking/virtual-ips.md index 14d8ddf2e6..2272d98500 100644 --- a/content/zh-cn/docs/reference/networking/virtual-ips.md +++ b/content/zh-cn/docs/reference/networking/virtual-ips.md @@ -103,28 +103,46 @@ nor should they need to keep track of the set of backends themselves. ## 代理模式 {#proxy-modes} -注意,kube-proxy 会根据不同配置以不同的模式启动。 +kube-proxy 会根据不同配置以不同的模式启动。 -- kube-proxy 的配置是通过 ConfigMap 完成的,kube-proxy 的 ConfigMap 实际上弃用了 kube-proxy 大部分标志的行为。 -- kube-proxy 的 ConfigMap 不支持配置的实时重新加载。 -- kube-proxy 不能在启动时验证和检查所有的 ConfigMap 参数。 - 例如,如果你的操作系统不允许你运行 iptables 命令,标准的 kube-proxy 内核实现将无法工作。 +在 Linux 节点上,kube-proxy 的可用模式是: + +[`iptables`](#proxy-mode-iptables) +: kube-proxy 在 Linux 上使用 iptables 配置数据包转发规则的一种模式。 + +[`ipvs`](#proxy-mode-ipvs) +: kube-proxy 使用 ipvs 配置数据包转发规则的一种模式。 + + +Windows 上的 kube-proxy 只有一种模式可用: + +[`kernelspace`](#proxy-mode-kernelspace) +: kube-proxy 在 Windows 内核中配置数据包转发规则的一种模式。 ### `iptables` 代理模式 {#proxy-mode-iptables} +**此代理模式仅适用于 Linux 节点。** + ### IPVS 代理模式 {#proxy-mode-ipvs} +**此代理模式仅适用于 Linux 节点。** + {{< figure src="/images/docs/services-ipvs-overview.svg" title="IPVS 模式下 Service 的虚拟 IP 地址机制" class="diagram-medium" >}} + +### `kernelspace` 代理模式 {#proxy-mode-kernelspace} + +**此代理模式仅适用于 Windows 节点。** + + +kube-proxy 在 Windows **虚拟过滤平台** (VFP)(Windows vSwitch 的扩展)中配置数据包过滤规则。 +这些规则处理节点级虚拟网络中的封装数据包,并重写数据包,使目标 IP 地址(和第 2 层信息)正确, +以便将数据包路由到正确的目的地。Windows VFP 类似于 Linux `nftables` 或 `iptables` 等工具。 +Windows VFP 是最初为支持虚拟机网络而实现的 **Hyper-V Switch** 的扩展。 + + +当节点上的 Pod 将流量发送到某虚拟 IP 地址,且 kube-proxy 选择不同节点上的 Pod +作为负载均衡目标时,`kernelspace` 代理模式会重写该数据包以将其发送到对应目标后端 Pod。 +Windows 主机网络服务(HSN)会配置数据包重写规则,确保返回流量看起来来自虚拟 IP 地址, +而不是特定的后端 Pod。 + + +#### `kernelspace` 模式的 Direct Server Return(DSR) {#windows-direct-server-return} + +{{< feature-state for_k8s_version="v1.14" state="alpha" >}} + + +作为基本操作的替代方案,托管服务后端 Pod 的节点可以直接应用数据包重写, +而不用将此工作交给运行客户端 Pod 的节点来执行。这称为**Direct Server Return(DSR)**。 + + +要使用这种技术,你必须使用 `--enable-dsr` 命令行参数运行 kube-proxy **并**启用 +`WinDSR` [特性门控](/zh-cn/docs/reference/command-line-tools-reference/feature-gates/)。 + +即使两个 Pod 在同一节点上运行,Direct Server Return(DSR)也可优化 Pod 的返回流量。 +