Описание компонентов Mesh

Данный документ предоставляет краткий обзор различных компонентов сервисной сети и их ролей в платформе.

Содержание

Участвующие решения с открытым исходным кодом

  • Istio: Решение с открытым исходным кодом для сервисной сети, предоставляющее функции управления трафиком, безопасности и наблюдаемости.
  • OpenTelemetry: Решение с открытым исходным кодом для наблюдаемости, поддерживающее инструментирование на уровне кода с широким применением.
  • Jaeger: Решение с открытым исходным кодом для распределенной трассировки.
  • Flagger: Инструмент постепенной доставки с открытым исходным кодом, поддерживающий различные стратегии развертывания, включая Canary, A/B Testing и Blue/Green.

Описание компонентов

Компоненты контрольной плоскости

Название компонентаОписание
Istio
istiodКомпонент контрольной плоскости Istio, название которого различает различные основные версии Istio.
istio-cniУзловой агент Istio CNI, используемый для настройки перенаправления трафика для Pod в сети. Этот компонент не развертывается по умолчанию, если не используются часы OpenShift.
tier2-gatewayГейтвей Tier2 в сочетании с гейтвеем Tier1 предоставляет усовершенствованные функции управления трафиком, такие как серые релизы и маршрутизацию сервисов для входящего трафика в сети.
istio-eastwestgatewayВосточно-западный гейтвей в Istio для связи сервисной сети между несколькими кластерами. Его основная функция - обеспечить возможность взаимодействия сервисов в различных кластерах. Этот компонент развертывается только в сервисных сетях multi-network и multi-cluster.
asm-coreКомпонент, предоставляющий глобальное ограничение скорости для Istio. Он разворачивается по умолчанию, но работает только в том случае, если сервисная сеть интегрирована с Redis.
OpenTelemetry
asm-otel-collectorКомпонент решения OpenTelemetry для получения, обработки и экспорта данных наблюдаемости. Поддерживает открытые форматы данных, такие как Jaeger и Prometheus. Данные трассировки отправляются в Jaeger, в то время как данные Метрики отправляются в Prometheus или VictoriaMetrics.
asm-otel-collector-lbОбеспечивает балансировку нагрузки для компонента asm-otel-collector. Собранные данные наблюдаемости, проведенные OTel Java Agent, передаются в asm-otel-collector через этот компонент.
Jaeger
jaeger-prod-collectorКомпонент коллектора Jaeger, собирающий данные распределенной трассировки от sidecars и asm-otel-collector, и взаимодействующий с Elasticsearch для хранения данных трассировки.
jaeger-prod-queryКомпонент запроса данных Jaeger, запрашивающий данные трассировки из Elasticsearch.
Flagger
flaggerОбеспечивает функциональность серых релизов и интегрируется с Istio для реализации стратегий постепенной доставки для сервисов.
Другие
asm-controllerУправляет и координирует различные ресурсы внутри сервисной сети.

Компоненты плоскости данных

Название компонентаОписание
Ingress GatewayНезависимый прокси Envoy, работающий на краю сети. Позволяет настраивать публичные порты и протоколы для указания разрешенного трафика в сеть.
Egress GatewayНезависимый прокси Envoy, работающий на краю сети. Позволяет мониторинг, ведение журналов и соблюдение политик безопасности для трафика, покидающего сеть.
SidecarОбычно разворачивается в том же Pod, что и контейнер приложения. Обрабатывает сетевые запросы от приложения, включая управление трафиком, соблюдение политики безопасности, балансировку нагрузки и обнаружение сервисов.
OpenTelemetry Java AgentАвтоматизированный инструмент для сбора данных распределенной трассировки и метрик внутри Java приложений. Инжекция OpenTelemetry Java Agent позволяет выполнить распределенную трассировку маршрутов запросов и сбор данных о производительности без изменения кода приложения.

Выделение CPU и памяти

Этот раздел описывает минимально рекомендуемые вычислительные ресурсы для компонентов сервисной сети в кластере.

Выделение CPU и памяти для каждого компонента настраиваемое.

Перед созданием сервисной сети убедитесь, что узлы кластера имеют достаточное количество CPU и памяти для запуска всех компонентов сервисной сети.

Важная заметка:

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

Таблица ниже подводит итоги рекомендуемых минимальных запросов ресурсов и ограничений для CPU и памяти для каждого компонента сервисной сети.

В Kubernetes запросы ресурсов указывают, что рабочая нагрузка не будет развернута на узле, если только этот узел не имеет хотя бы указанного объема доступной памяти и CPU. Если рабочая нагрузка превышает лимиты CPU или памяти, она может быть завершена или исключена из узла. Для получения дополнительной информации о управлении ограничениями ресурсов контейнера смотрите документацию Kubernetes.

КомпонентЗапрос CPUЗапрос памятиЛимит CPUЛимит памяти
Istio
istiod500m512Mi2000m2048Mi
ingress gateway250m128Mi2000m1024Mi
egress gateway250m128Mi2000m1024Mi
sidecar100m128Mi500m512Mi
tier2-gateway250m128Mi2000m1024Mi
istio-eastwestgateway250m128Mi2000m1024Mi
asm-core250m128Mi1000m512Mi
OpenTelemetry
asm-otel-collector250m512Mi2000m1Gi
asm-otel-collector-lb250m512Mi1000m1Gi
Jaeger
jaeger-prod-collector250m512Mi3000m512Mi
jaeger-prod-query250m512Mi1000m512Mi
Flagger
flagger250m128Mi1000m512Mi
Другие
asm-controller250m512Mi1000m512Mi