• Русский
  • Создание service mesh

    В этом документе объясняется, как создать однокластерный service mesh. Перед продолжением убедитесь, что вы знакомы со следующими темами:

    • Модели развертывания Mesh: выберите модель развертывания mesh, которая соответствует вашим требованиям.
    • Описание компонентов Mesh: разберитесь в ролях компонентов mesh и подготовьте необходимые ресурсы CPU и памяти для service mesh.

    Инструкции по созданию мультикластерного service mesh см. в документации Multi-Cluster Service Mesh.

    Ограничения и лимиты

    • В каждом кластере допускается только один service mesh.
    • Если кластер является глобальным кластером и платформа находится в среде аварийного восстановления (то есть у глобального кластера есть основной кластер и кластер аварийного восстановления), в глобальном кластере нельзя развернуть service mesh.
    • Если кластер использует двухстековую сеть IPv4/IPv6, service mesh развернуть нельзя.

    Предварительные условия

    • Установлен Alauda Service Mesh Essentials Cluster Plugin.

    • Скачайте следующий установочный пакет, соответствующий архитектуре вашей платформы, и с помощью механизма Upload Packages загрузите пакет в глобальный кластер и целевой кластер (пожалуйста, не устанавливайте его вручную).

      • Alauda Service Mesh Operator
      • Flagger Operator
      • Alauda Build of Jaeger Operator
      • Alauda Build of OpenTelemetry Operator
      WARNING

      При загрузке операторов с помощью violet push не добавляйте параметр --target-catalog-source — используйте каталог источника по умолчанию, определенный внутри оператора.

    • Убедитесь, что в кластере развернут плагин Prometheus или плагин VictoriaMetrics.

      Примечание: если VictoriaMetrics развернут по мультикластерной архитектуре, vmstorage может находиться в другом кластере, отличном от service mesh.

    • Убедитесь, что доступен Elasticsearch. Service mesh может взаимодействовать с плагином логирования Elasticsearch кластера или с вашим собственным Elasticsearch.

    • Если кластер является кластером OpenShift, также должны быть выполнены следующие предварительные условия:

      • Создан namespace istio-system.
      • Добавьте namespace istio-system в группу anyuid SCC (Security Context Constraints). Для этого войдите на bastion host кластера OpenShift и выполните команду:
        oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system

    Шаги

    1. В левой навигационной панели нажмите Service Mesh > Mesh.
    2. Нажмите Create Service Mesh.
    3. Выберите кластер и версию Istio для развертывания service mesh. В расширенной конфигурации убедитесь, что архитектура mesh является однокластерной, и заполните параметры интерфейса для Elasticsearch и системы мониторинга. Можно выбрать существующую системную платформу или внешнюю систему.
      • Если высокая доступность строго обязательна, установите Pod anti-affinity в значение mandatory.
      • Ресурсы компонентов можно оставить со значениями по умолчанию, но по мере роста масштаба сервисов в mesh компонентам потребуется увеличение ресурсов. Своевременно настройте политики оповещений для компонентов mesh, чтобы получать уведомления, когда потребуется масштабирование.

    Для получения дополнительной информации см. Описание параметров Mesh

    Примечание: если кластер является кластером OpenShift, mesh автоматически обнаружит и по умолчанию развернет компонент istio-cni.

    Следующие шаги

    • Включите Istio CNI, чтобы не требовались privileged init containers в каждом Pod.
    • Включите Global Rate Limiting.
    • Используйте инструмент Istioctl.
    • Отслеживайте компоненты Mesh.

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

    Глобальная конфигурация

    Глобальная конфигурация mesh будет применена ко всем кластерам, в которых развернут mesh.

    ПараметрОписание
    Интерфейс с ElasticsearchПлатформа: интерфейс с плагином логирования Elasticsearch в любом кластере платформы. Выберите кластер, в котором расположен плагин логирования Elasticsearch.
    Внешний: интерфейс с внешним плагином логирования Elasticsearch. Пользователям необходимо настроить следующие параметры:
    Адрес доступа: адрес доступа к Elasticsearch, начинающийся с http:// или https://.
    Метод аутентификации: метод аутентификации для доступа к Elasticsearch.
    - Basic Auth: введите имя пользователя и пароль для проверки подлинности пользователя.
    - Без аутентификации: аутентификация для доступа не требуется.
    Интерфейс с системой мониторингаПлатформа: интерфейс с плагином Prometheus или плагином VictoriaMetrics в кластере.
    Внешний: интерфейс с Prometheus или VictoriaMetrics, предоставляемыми внешним плагином. Пользователям необходимо настроить следующие параметры:
    Адрес запроса данных: адрес запроса данных компонента мониторинга, начинающийся с http:// или https://.
    Метод аутентификации: метод аутентификации для доступа к системе мониторинга.
    - Basic Auth: введите имя пользователя и пароль для проверки подлинности пользователя.
    - Без аутентификации: аутентификация для доступа не требуется.
    Примечание: из-за того, что плагин Prometheus не может агрегировать данные мониторинга из нескольких кластеров, service mesh в этом кластере не может добавить дополнительные кластеры для формирования мультикластерного service mesh.

    Конфигурация на уровне кластера

    Конфигурация на уровне кластера применяется только к выбранному кластеру.

    ПараметрОписание
    Конфигурация SidecarКвота ресурсов: значение квоты ресурсов sidecar на уровне кластера по умолчанию. Его можно изменять в зависимости от фактических условий при внедрении sidecar для конкретных сервисов, но оно не может превышать максимальный предел квоты контейнеров namespace (LimitRange), в котором расположен sidecar.
    Конфигурация TraceЧастота выборки: значение частоты выборки trace sidecar на уровне кластера по умолчанию.
    Конфигурация RedisТребуется настраивать только при использовании функции Global Rate Limiting в data plane. Подробные способы настройки см. в разделе Enable Global Rate Limiting.
    Политика повторов HTTPКоличество повторов: значение максимального числа повторных попыток HTTP на уровне кластера по умолчанию.
    Примечание: Количество повторов в политике service routing Timeout and Retry переопределяет это значение по умолчанию.

    Конфигурация компонентов

    Примечание: компоненты Mesh развертываются в определенных namespace кластера в виде Deployment. После успешного создания mesh вы можете просмотреть состояние запуска компонентов на вкладке Components или нажать Component Name, чтобы перейти в namespace, где развернут компонент, на Container Platform, и просмотреть подробную информацию о Deployment работающего компонента.

    ПараметрОписание
    Pod Anti-AffinityKubernetes будет размещать Pod компонентов на узлах, которые соответствуют настройкам Pod Anti-Affinity.
    Mandatory: на одном и том же узле может работать только один Pod одного и того же компонента.
    Preferred: на одном и том же узле может работать несколько Pod одного и того же компонента. Kubernetes будет пытаться равномерно распределять Pod компонента по доступным узлам в соответствии с алгоритмом планирования, но не может гарантировать наличие Pod компонента на каждом узле.
    Instance CountОжидаемое количество Pod компонента для запуска, задается в соответствии с фактическим объемом бизнес-запросов.
    Resource QuotaЗначение запроса ресурсов (requests) для каждого экземпляра контейнера компонента при его создании, которое также является лимитом (limits) доступных ресурсов для контейнера. Устанавливайте его разумно в соответствии с фактическим объемом нагрузки и количеством экземпляров.
    Deployment NodeУзлы, на которых развертывается компонент. При создании mesh Pod компонента могут быть запланированы только на выбранных узлах.
    ELBHuawei Cloud Elastic Load Balancer (ELB), используемый для обеспечения балансировки нагрузки для Istio Gateway в кластере CCE. Когда выбранный кластер является кластером CCE, необходимо указать ELB ID и ELB Type, чтобы связать заранее подготовленный для кластера ELB.
    Total ResourcesОбщая квота ресурсов (CPU, memory), необходимая для создания всех экземпляров контейнеров компонента в текущей конфигурации. Если для компонента включено автоматическое масштабирование, расчет выполняется по максимальному числу экземпляров.