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

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

Содержание

Используемые решения с открытым исходным кодом

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

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

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

Component NameDescription
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, собирающий данные распределённого трассирования от сайдкаров и asm-otel-collector, а также взаимодействующий с Elasticsearch для хранения трассировочных данных.
jaeger-prod-queryКомпонент запроса данных Jaeger, выполняющий запросы трассировочных данных из Elasticsearch.
Flagger
flaggerОбеспечивает функциональность серых релизов и интегрируется с Istio для реализации стратегий прогрессивного развертывания сервисов.
Прочие
asm-controllerУправляет и координирует различные ресурсы внутри сервисной сетки.

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

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

Распределение CPU и памяти

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

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

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

Важное примечание:

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

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

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

ComponentCPU - RequestMemory - RequestCPU - LimitMemory - Limit
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