• Русский
  • Описание компонентов Mesh

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

    Содержание

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

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

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

    Компоненты управляющей плоскости

    Название компонентаОписание
    Istio
    istiodКомпонент управляющей плоскости Istio, название которого различает разные основные версии Istio.
    istio-cniАгент узла Istio CNI, используемый для настройки перенаправления трафика для Pod-ов внутри mesh. Этот компонент по умолчанию не разворачивается, если не используется кластер OpenShift.
    tier2-gatewayШлюз Tier2, совместно с шлюзом Tier1, обеспечивает расширенные возможности управления трафиком, такие как серые релизы и маршрутизация сервисов для входящего трафика в mesh.
    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, собирающий данные распределённого трассирования от sidecar-ов и asm-otel-collector, а также взаимодействующий с Elasticsearch для хранения данных трассировок.
    jaeger-prod-queryКомпонент запроса данных Jaeger, выполняющий запросы трассировок из Elasticsearch.
    Flagger
    flaggerОбеспечивает функциональность серых релизов и интегрируется с Istio для реализации стратегий прогрессивного развертывания сервисов.
    Прочие
    asm-controllerУправляет и координирует различные ресурсы внутри сервисной сетки.

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

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

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

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

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

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

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

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

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

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

    КомпонентCPU - RequestПамять - RequestCPU - LimitПамять - 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