【问题标题】:Kubernete NAT pod IP on Windows NodesWindows 节点上的 Kubernetes NAT pod IP
【发布时间】:2020-07-01 21:22:41
【问题描述】:

我有一个使用一些 Linux 和 Windows 节点运行的混合 GKE 集群。我按照这个操作指南 (https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent) 为我的一些网络配置了伪装,它在 Linux 节点上就像一个魅力。但它在 Windows 主机上不起作用,它给了我这个错误:

Failed to create pod sandbox: rpc error: code = Unknown desc = failed to start sandbox container for pod "ip-masq-agent-pc9vn": Error response from daemon: network host not found

任何人都知道如何在 Windows 节点上配置伪装?

添加细节:

我知道 Linux 容器不在 Windows 节点上运行,因此 ip-masq-agent 不会在该节点上运行,并且我知道我可以使用污点或标签来避免在该节点上调度 pod。

我将 Windows 节点与 kubernetes 一起使用,因为我有一些 .Net Framework 应用程序在其上运行,并且运行良好。我的问题是我需要伪装从 pod 到集群外部主机的连接,因为源连接是 Pod IP,而不是节点 IP。

在 Linux 机器上,我可以使用 ip-masq-agent 来做到这一点,它可以管理 Iptables 规则来伪装流量。但是在 Windows 上,由于@Rico 在他的回答中所说的原因,ip-masq-agent 不起作用。

我想知道是否有人知道在 Windows 节点上实现相同目标的另一种方法。

我可以使用“NAT 机器”在中间保存所有连接并将所有流量路由到该机器,但这样做真的很丑。

解决方案: 我最终允许 pod 网络通过 VPN。谢谢大家的回复。

【问题讨论】:

    标签: windows kubernetes nodes


    【解决方案1】:

    简单的答案是你不能。 iptables 是 Linux 的东西。 Windows 有一些替代方案可用于设置 NAT (netsh),如下所述:https://superuser.com/questions/1088309/windows-10-nat-port-forwarding-ip-masquerade,但没有特定的 K8s 支持,因此您将自行决定。

    为确保您的 ip-masq-agent 不会在您的 Windows 节点上安排,您可以按照 here 所述的NodeSelectorTaint/Toleration 方法进行操作。

    一个更广泛的问题是你想在 Windows 机器上运行什么? Windows containers 不能与 Linux 容器互换。如果您希望您的 Linux pod 和 Windows pod 相互通信,您是否尝试过Flannel

    【讨论】:

    • 你好里科,谢谢你的回答。我想我无法以正确的方式解释我的问题,所以我在答案中添加了更多细节,现在我想你会理解我的问题:)。
    • 是的,你可以试试netsh
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 2021-10-16
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2019-04-08
    • 2020-04-10
    相关资源
    最近更新 更多