У меня есть гибридный кластер GKE, работающий с некоторыми узлами Linux и Windows. Я выполнил это руководство (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 не будет работать на этом узле, и я знаю, что могу использовать taints или метки, чтобы избежать планирования модулей на этом узле.

Я использую узлы Windows с кубернетами, потому что на нем работают некоторые приложения .Net Framework, и он отлично работает. Моя проблема в том, что мне нужно замаскировать подключения от модуля к хостам за пределами кластера, потому что исходные соединения - это IP-адреса модуля, а не IP-адрес узла.

На машинах Linux я могу сделать это с помощью ip-masq-agent, который управляет правилами Iptables для маскировки трафика. Но в Windows ip-masq-agent не работает по причинам, которые @Rico сказал в своем ответе.

Я хочу знать, знает ли кто-нибудь другой способ добиться того же на узлах Windows.

Я могу использовать «NAT-машину», удерживающую все соединения посередине, и направлять весь трафик на эту машину, но это действительно уродливый способ сделать это.

Решение: В конечном итоге я позволяю сети модулей проходить через VPN. Спасибо за все ответы.

3
Bruno R. Rodrigues 23 Июн 2020 в 04:31

1 ответ

Лучший ответ

Простой ответ: вы не можете. iptables - это вещь Linux. В Windows есть несколько альтернатив, которые можно использовать для настройки NAT (netsh), как описано здесь: https://superuser.com/questions/1088309/windows-10-nat-port-forwarding-ip-masquerade, но специальной поддержки K8s нет, поэтому вы будете сами по себе.

Чтобы убедиться, что ваш ip-masq-agent не запланирован на ваших узлах Windows, вы можете использовать подход NodeSelector, Taint/Toleration, как описано в здесь .

Более широкий вопрос: что вы пытаетесь запустить на машинах с Windows? контейнеры Windows не взаимозаменяемы с контейнерами Linux. Если вы хотите, чтобы модули Linux и модули Windows общались друг с другом, попробовали ли вы Flannel?

3
Rico 23 Июн 2020 в 05:22