Почему мой межсервисный трафик отображается в транзитном кластере в Киали
У меня есть два кластера Istio, использующих реплицированную плоскость управления с запущенным Kiali. В каждом кластере у меня есть два приложения, которые взаимодействуют, но я не вижу трафика между ними на панели инструментов Kiali. Вместо этого трафик отображается как проходящий через транзитный кластер.
Приложения взаимодействуют с использованием имени службы kubernetes, и они взаимодействуют правильно, просто это неправильно отображается в Kiali.
Есть мысли относительно того, в чем может быть проблема? Или это ожидаемое поведение (я все еще новичок в Istio).
1 ответ
Насколько мне известно, это ожидаемое поведение при использовании опции Passthrough. Проверьте приведенную ниже ссылку istiobyexample, которая точно показывает, как это работает.
Когда ALLOW_ANY включен, Istio использует кластер посланника под названием PassthroughCluster, навязанный коляски прокси, чтобы следить за исходящие.
Взгляните на документацию kiali об этом
Почему я вижу трафик в PassthroughCluster?
Запросы, идущие в PassthroughCluster (или BlackHoleCluster), - это запросы, которые не были перенаправлены на определенную службу или запись службы, а вместо этого попадают в один из этих встроенных обработчиков запросов Istio. Дополнительные сведения см. В разделе Мониторинг заблокированного и сквозного трафика внешних служб.
Неожиданная маршрутизация к этим узлам не указывает на проблему Kiali, вы видите фактическую маршрутизацию, выполняемую Istio. Как правило, это связано с неправильной конфигурацией и / или отсутствием сопроводительной книги Istio. Реальная проблема с сеткой возникает реже, но возможна, например, проблема синхронизации или удаленный модуль.
Используйте представление списка рабочих нагрузок Kiali, чтобы убедиться, что коляски не пропали. Используйте список Kiali Istio Config для поиска ошибок проверки конфигурации.
И пример на http://istiobyexample.dev/.
Вариант 1 - сквозная
Для начала воспользуемся установкой Istio с опцией по умолчанию ALLOW_ANY для выхода. Это означает, что запросы idgen к httpbin разрешены без дополнительной настройки. Когда ALLOW_ANY включен, Istio использует кластер Envoy под названием PassthroughCluster, принудительно подключаемый прокси-сервером idgen, для мониторинга исходящего трафика.
Кластер Envoy - это серверный (или "восходящий") набор конечных точек, представляющий внешнюю службу. Прокси-сервер Envoy Sidecar от Istio применяет фильтры к перехваченным запросам из контейнера приложения. На основе этих фильтров Envoy отправляет трафик по определенному маршруту. А маршрут определяет кластер, в который будет отправляться трафик.
Кластер Istio Passthrough настроен таким образом, что серверная часть является исходным адресатом запроса. Таким образом, когда ALLOW_ANY включен для исходящего трафика, Envoy просто "пропускает" запрос idgen к httpbin.
В этой конфигурации, если мы отправляем запросы идентификатора рецепта через IngressGateway, idgen может успешно вызвать httpbin. Этот трафик отображается как трафик PassthroughCluster в графе службы Kiali - нам нужно добавить ServiceEntry, чтобы httpbin мог получить собственную телеметрию уровня обслуживания. (Мы сделаем это через мгновение.)
Но если мы углубимся в Prometheus и найдем метрику istio_total_requests, мы увидим, что трафик PassthroughCluster идет на службу назначения, называемую httpbin.org.
Надеюсь, вы найдете это полезным.