Требования к приложению

Многие Kubernetes-приложения могут быть развернуты в кластере с поддержкой Istio без каких-либо изменений. Однако модель сайдкара Istio накладывает некоторые особенности, которые следует учитывать при развертывании приложения с поддержкой Istio. В этом документе описаны эти особенности и конкретные требования для включения Istio.

Содержание

Требования к Pod

Чтобы быть частью mesh, Kubernetes Pod должны соответствовать следующим требованиям:

  • UID приложений: Убедитесь, что ваши Pod не запускают приложения от имени пользователя с идентификатором пользователя (UID) 1337, так как 1337 зарезервирован для прокси-сайдкара.

  • Метки Pod: Рекомендуется явно указывать идентификатор приложения и версию с помощью меток Pod. Эти метки добавляют контекстную информацию к метрикам и телеметрии, которые собирает Istio. Каждое из этих значений считывается из нескольких меток в порядке убывания приоритета:

    • Имя приложения: service.istio.io/canonical-name, app.kubernetes.io/name или app.
    • Версия приложения: service.istio.io/canonical-revision, app.kubernetes.io/version или version.
    WARNING

    Kiali зависит от корректности этих меток для ряда функций (особенно метки Application name).

    В Istio возможно использовать другой набор меток, например app.kubernetes.io/name и app.kubernetes.io/version, однако необходимо настроить Kiali на используемые метки. По умолчанию Kiali использует рекомендуемые Istio метки app и version.

  • Именованные порты сервиса: Порты сервиса могут быть опционально именованы для явного указания протокола. Подробнее см. Protocol Selection. Если Pod принадлежит нескольким Kubernetes сервисам, сервисы не могут использовать один и тот же номер порта для разных протоколов, например HTTP и TCP.

Порты, используемые Istio

Следующие порты и протоколы используются прокси-сайдкаром Istio (Envoy).

Чтобы избежать конфликтов портов с сайдкарами, приложения не должны использовать порты, занятые Envoy.

ПортПротоколОписаниеТолько внутри Pod
15000TCPАдминистративный порт Envoy (команды/диагностика)Да
15001TCPИсходящий трафик EnvoyНет
15002TCPПорт прослушивания для обнаружения сбоевДа
15004HTTPОтладочный портДа
15006TCPВходящий трафик EnvoyНет
15008HTTP2Порт туннеля HBONE mTLSНет
15020HTTPОбъединённая телеметрия Prometheus от Istio agent, Envoy и приложенияНет
15021HTTPПроверки состоянияНет
15053DNSDNS-порт, если включён захватДа
15090HTTPТелеметрия Prometheus EnvoyНет

Ссылки