У меня есть гибридный кластер 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. Спасибо за все ответы.
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?
Похожие вопросы
Новые вопросы
windows
Написание программного обеспечения, специфичного для операционной системы Microsoft Windows: API, поведения и т. д. ОБЩАЯ ПОДДЕРЖКА WINDOWS НЕ ПО ТЕМЕ. Вопросы поддержки можно задать на https://superuser.com