В модуле k8s с внедренным istio, почему envoy вызывает localhost, пакеты проходят цепочку ПРЕДВАРИТЕЛЬНОЙ МАРШРУТИЗАЦИИ

#kubernetes #iptables #istio

#kubernetes #iptables #istio

Вопрос:

насколько я знаю, когда процесс отправляет пакеты, пакеты должны передавать только ВЫВОД iptables и ПОСЛЕДУЮЩУЮ МАРШРУТИЗАЦИЮ.

но когда я тестировал в pod с введением istio. Я обнаружил, что когда посланник вызывает localhost: xxx , пакеты действительно проходят ПРЕДВАРИТЕЛЬНУЮ МАРШРУТИЗАЦИЮ и ВВОД. почему это происходит?

Комментарии:

1. AFAIK istio-init контейнер инициализации используется для настройки правил iptables, чтобы входящий / исходящий трафик проходил через прокси-сервер sidecar, поэтому я не уверен, почему он не должен использовать предварительную маршрутизацию и ввод? Существует схема iptables, которая должна ответить на ваш вопрос. Дополнительно проверьте эту ссылку о методах ввода / вывода трафика через прокси-сервер envoy. Дайте мне знать, если это ответит на ваш вопрос.

Ответ №1:

Как уже упоминалось в скрипте istio iptables.


ВВОД используется для удаления всего входящего трафика, кроме установленных соединений.


ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ используется для обработки входящих портов. Трафик будет перенаправлен на Envoy, который будет обрабатывать и пересылать локальную службу. Если этот параметр не установлен, ни один входящий порт не будет перехвачен istio iptables.

Согласно прокси-перенаправлению на github

Входящие

Правило iptable для перенаправления входящих сообщений является простым, предполагая, что весь трафик должен быть перенаправлен на прокси-сервер. Дополнительные правила необходимы, если входящему трафику необходимо обойти прокси, например ssh.

iptables -t nat -ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -p ПЕРЕНАПРАВЛЕНИЕ tcp -j —на порт ${ISTIO_PROXY_PORT}


Существует целая схема iptables для istio, так что вы можете на самом деле проверить, что именно делает ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ и ВВОД.

введите описание изображения здесь


Кроме того, на medium есть блог о понимании того, как Envoy Sidecar перехватывает и направляет трафик в сервисной сетке Istio. Стоит взглянуть, если вы хотите понять весь процесс.

Комментарии:

1. Я думаю, что OP спрашивает конкретно о локальном трафике. Обычно входящий трафик извне контейнера будет проходить через ПРЕДВАРИТЕЛЬНУЮ МАРШРУТИЗАЦИЮ, но локально сгенерированный трафик, предназначенный для локального процесса, не будет. И все же каким-то образом это происходит здесь. Вы случайно не знаете, как это сделать?