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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Шаги

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

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

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

    Дальнейшие шаги

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

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

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

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

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

    Конфигурация на уровне cluster

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

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

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

    Примечание: Компоненты mesh развертываются в определенных namespace cluster в виде Deployments. После успешного создания 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 на cluster CCE. Когда выбранный cluster является cluster CCE, необходимо заполнить ELB ID и ELB Type, чтобы связать ELB, заранее подготовленный для cluster.
    Total ResourcesОбщая квота ресурсов (CPU, memory), необходимая для создания всех экземпляров контейнеров компонента при текущей конфигурации. Когда для компонента включено автоматическое масштабирование, расчет выполняется по максимальному количеству экземпляров.