• Русский
  • Создание сервисной сетки

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

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

    Для инструкций по созданию сервисной сетки с несколькими кластерами обратитесь к документации Multi-Cluster Service Mesh.

    Содержание

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

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

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

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

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

      • Оператор Alauda Service Mesh
      • Оператор Flagger
      • Оператор Alauda Build of Jaeger
      • Оператор Alauda Build of OpenTelemetry
    • Убедитесь, что в кластере развернут плагин Prometheus или VictoriaMetrics.

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

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

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

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

    Шаги

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

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

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

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

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

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

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

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

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

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

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

    ПараметрОписание
    Конфигурация SidecarКвота ресурсов: значение квоты ресурсов sidecar по умолчанию на уровне кластера. Может быть изменено в зависимости от реальных условий при инъекции sidecar для конкретных сервисов, но не может превышать максимальный лимит квоты контейнера пространства имён (LimitRange), в котором расположен sidecar.
    Конфигурация трассировкиЧастота выборки: значение частоты выборки трассировки sidecar по умолчанию на уровне кластера.
    Конфигурация RedisНеобходимо настраивать только при использовании функции Global Rate Limiting в плоскости данных. Для конкретных методов настройки смотрите раздел Enable Global Rate Limiting.
    Политика HTTP RetryКоличество повторов: максимальное количество повторных попыток HTTP по умолчанию на уровне кластера.
    Примечание: значение Retry Count в политике маршрутизации сервиса Timeout and Retry переопределит это значение по умолчанию.

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

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

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