Многие Kubernetes-приложения могут быть развернуты в кластере с поддержкой Istio без каких-либо изменений. Однако модель сайдкара Istio накладывает некоторые особенности, которые следует учитывать при развертывании приложения с поддержкой Istio. В этом документе описаны эти особенности и конкретные требования для включения Istio.
Чтобы быть частью 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
.Kiali зависит от корректности этих меток для ряда функций (особенно метки Application name).
В Istio возможно использовать другой набор меток, например app.kubernetes.io/name
и app.kubernetes.io/version
, однако необходимо настроить Kiali на используемые метки. По умолчанию Kiali использует рекомендуемые Istio метки app
и version
.
Именованные порты сервиса: Порты сервиса могут быть опционально именованы для явного указания протокола. Подробнее см. Protocol Selection. Если Pod принадлежит нескольким Kubernetes сервисам, сервисы не могут использовать один и тот же номер порта для разных протоколов, например HTTP и TCP.
Следующие порты и протоколы используются прокси-сайдкаром Istio (Envoy).
Чтобы избежать конфликтов портов с сайдкарами, приложения не должны использовать порты, занятые Envoy.
Порт | Протокол | Описание | Только внутри Pod |
---|---|---|---|
15000 | TCP | Административный порт Envoy (команды/диагностика) | Да |
15001 | TCP | Исходящий трафик Envoy | Нет |
15002 | TCP | Порт прослушивания для обнаружения сбоев | Да |
15004 | HTTP | Отладочный порт | Да |
15006 | TCP | Входящий трафик Envoy | Нет |
15008 | HTTP2 | Порт туннеля HBONE mTLS | Нет |
15020 | HTTP | Объединённая телеметрия Prometheus от Istio agent , Envoy и приложения | Нет |
15021 | HTTP | Проверки состояния | Нет |
15053 | DNS | DNS-порт, если включён захват | Да |
15090 | HTTP | Телеметрия Prometheus Envoy | Нет |