Узел Вне кластера openshift не может получить доступ к модулям внутри кластера. - PullRequest
0 голосов
/ 12 декабря 2018

Примечание. У меня есть три узла (A, B, C), ips которых 172.18.143.115, 172.18.143.117, 172.18.143.124.

A и B - это кластер openshift, использующий ovs-sdn в качестве сетевого импульса, сеть pod - 10.130.0.0/16, диапазон ip обслуживания составляет 172.30.0.0/16.в узле B есть модуль P (10.130.3.249:8002) и соответствующая служба S (172.30.148.77:8002).

Я могу свернуть S в узле A или B, но не могу сделать это в узле CПоэтому я добавляю маршрут, например, если dst_ip равно P, затем переходите к узлу A или B. Затем происходят странные вещи: если маршрут указывает на B, я могу свернуть S, в противном случае, если маршрут указывает на A, я не могу свернуть S.

Через tcpdump я обнаружил, что pod P возвращает пакет TCP ACK на узел C через его ветвь, затем этот пакет выводится на tun0 в соответствии с потоками в OVS, в соответствии с маршрутом, который должен быть отправлен ens192 (сетевой интерфейс)поскольку его dst_ip является узлом C, но я не могу поймать его на ens192 с помощью tcpdump, похоже, что этот пакет отброшен.Почему это произошло?

1 Ответ

0 голосов
/ 12 декабря 2018

По умолчанию трафик направляется только внутри кластера, поэтому, если приложение на C не является частью кластера, вход и выход между узлами A / B и C. будут невозможны. Все это контролируется приложением.настройка службы.

Для маршрутизации входящего и исходящего трафика из / в кластер, вам необходимо настроить службу вашего приложения.Один из самых простых способов сделать это - использовать службу типа LoadBalancer .

Вы также можете использовать службу типа NodePort , которая будет открывать службу насопоставленный порт в диапазоне 30000 - 32767 для всех узлов.

Наконец, вы можете назначить Внешний IP для службы, чтобы разрешить внешний трафик в кластер.

Надеюсь, это поможет!

...