Поделиться через


Настройка надстройки сетки службы на основе Istio для Служба Azure Kubernetes

Istio с открытым исходным кодом использует MeshConfig для определения параметров на уровне сетки для сетки службы Istio. Надстройка сетки службы на основе Istio для AKS строится на основе MeshConfig и классифицирует различные свойства как поддерживаемые, разрешенные и заблокированные.

В этой статье описывается настройка надстройки сетки сетки на основе Istio для Служба Azure Kubernetes и политики поддержки, применимой для такой конфигурации.

Необходимые компоненты

В этом руководстве предполагается, что вы выполнили документацию , чтобы включить надстройку Istio в кластере AKS.

Настройка конфигурации в кластере

  1. Узнайте, какая редакция Istio развернута в кластере:

    az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
    

    Выходные данные:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Создайте ConfigMap с именем istio-shared-configmap-<asm-revision> в aks-istio-system пространстве имен. Например, если в кластере выполняется редакция сетки asm-1-18, необходимо назвать ConfigMap как istio-shared-configmap-asm-1-18. Конфигурация сетки должна быть предоставлена в разделе данных в сетке.

    Пример:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: istio-shared-configmap-asm-1-18
      namespace: aks-istio-system
    data:
      mesh: |-
        accessLogFile: /dev/stdout
        defaultConfig:
          holdApplicationUntilProxyStarts: true
    

    Значения, приведенные ниже defaultConfig , относятся к параметрам на уровне сетки, применяемым для прокси-сервера бокового автомобиля Envoy.

Внимание

ConfigMap по умолчанию (например, istio-asm-1-18 для редакции asm-1-18) создается в пространстве имен в aks-istio-system кластере при включении надстройки Istio. Однако этот ConfigMap по умолчанию примирится с помощью управляемой надстройки Istio, поэтому пользователи не должны напрямую изменять этот ConfigMap. Вместо этого пользователи должны создать определенную редакцию Istio shared ConfigMap (например istio-shared-configmap-asm-1-18 , для редакции asm-1-18) в пространстве имен aks-istio-system, а затем плоскость управления Istio будет объединяться с ConfigMap по умолчанию с параметрами по умолчанию, принимающие приоритет.

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

При выполнении канарского обновления для Istio необходимо создать отдельную конфигурацию для новой редакции в aks-istio-system пространстве имен, прежде чем инициировать обновление канарной версии. Таким образом, конфигурация доступна при развертывании уровня управления новой редакции в кластере. Например, если вы обновляете сетку с asm-1-18 до asm-1-19, необходимо скопировать изменения из istio-shared-configmap-asm-1-18 этого, чтобы создать новое ConfigMap, вызываемое istio-shared-configmap-asm-1-19 aks-istio-system в пространстве имен.

После завершения обновления или отката можно удалить ConfigMap редакции, которая была удалена из кластера.

Допустимые, поддерживаемые и заблокированные значения MeshConfig

Поля в MeshConfig них классифицируются как allowed, supportedили blocked. Дополнительные сведения об этих категориях см. в политике поддержки функций и параметров конфигурации надстройки Istio.

Конфигурация сетки и список разрешенных или поддерживаемых полей относятся к редакции, относясь к учетной записи для добавления и удаления полей в разных редакциях. Полный список разрешенных полей и поддерживаемых или неподдерживаемых полей в списке разрешенных указан в таблице ниже. Когда новая редакция сетки доступна, все изменения разрешенной и поддерживаемой классификации полей отмечаются в этой таблице.

MeshConfig

Поля, представленные в справочной документации по MeshConfig открытый код, которые не рассматриваются в следующей таблице, блокируются. Например, configSources блокируется.

Поле Поддерживается или разрешено Примечания
proxyListenPort Допустимо -
proxyInboundListenPort Допустимо -
proxyHttpPort Допустимо -
connectTimeout Допустимо Настройка в DestinationRule
tcpKeepAlive Допустимо Настройка в DestinationRule
defaultConfig Поддерживается Используется для настройки ProxyConfig
outboundTrafficPolicy Поддерживается Также можно настроить в Sidecar CR
extensionProviders Допустимо -
defaultProviders Допустимо -
accessLogFile Поддерживается Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см . в Azure Monitor Container Insights в AKS. Рекомендуется настроить ведение журнала доступа через API телеметрии.
accessLogFormat Поддерживается Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS.
accessLogEncoding Поддерживается Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS.
enableTracing Допустимо Рекомендуется настроить трассировку с помощью API телеметрии.
enableEnvoyAccessLogService Поддерживается Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS.
disableEnvoyListenerLog Поддерживается Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS.
trustDomain Допустимо -
trustDomainAliases Допустимо -
caCertificates Допустимо Настройка в DestinationRule
defaultServiceExportTo Допустимо Настройка в ServiceEntry
defaultVirtualServiceExportTo Допустимо Настройка в VirtualService
defaultDestinationRuleExportTo Допустимо Настройка в DestinationRule
localityLbSetting Допустимо Настройка в DestinationRule
dnsRefreshRate Допустимо -
h2UpgradePolicy Допустимо Настройка в DestinationRule
enablePrometheusMerge Допустимо -
discoverySelectors Поддерживается -
pathNormalization Допустимо -
defaultHttpRetryPolicy Допустимо Настройка в VirtualService
serviceSettings Допустимо -
meshMTLS Допустимо -
tlsDefaults Допустимо -
ingressService Допустимо Имя службы Kubernetes, используемой для контроллера входящего трафика istio.
ingressSelector Допустимо Определяет, какое развертывание шлюза следует использовать в качестве контроллера входящего трафика. Это поле соответствует полю Gateway.selector и будет присвоено значение istio: INGRESS_SELECTOR.

ProxyConfig (meshConfig.defaultConfig)

Поля, представленные в справочной документации по MeshConfig открытый код, которые не рассматриваются в следующей таблице, блокируются.

Поле Поддерживается или разрешено Примечания
tracingServiceName Допустимо Рекомендуется настроить трассировку с помощью API телеметрии.
drainDuration Поддерживается -
statsUdpAddress Допустимо -
proxyAdminPort Допустимо -
tracing. Допустимо Рекомендуется настроить трассировку с помощью API телеметрии.
параллелизм Поддерживается -
envoyAccessLogService Допустимо Рекомендуется настроить трассировку с помощью API телеметрии.
EnvoyMetricsService Допустимо Рекомендуется настроить коллекцию метрик с помощью API телеметрии.
proxyMetadata Допустимо -
statusPort Допустимо -
extraStatTags Допустимо -
proxyStatsMatcher Допустимо -
terminationDrainDuration Поддерживается -
meshId Допустимо -
holdApplicationUntilProxyStarts Поддерживается -
caCertificatesPem Допустимо -
privateKeyProvider Допустимо -

Внимание

Область поддержки конфигураций: конфигурация сетки позволяет поставщикам расширений, таким как автономные экземпляры Zipkin или Apache Skywalking, настраиваться с помощью надстройки Istio. Однако эти поставщики расширений находятся вне области поддержки надстройки Istio. Все проблемы, связанные с средствами расширения, находятся вне границы поддержки надстройки Istio.

Распространенные ошибки и советы по устранению неполадок

  • Убедитесь, что MeshConfig отступил пробелами вместо вкладок.
  • Убедитесь, что вы редактируете только общую конфигурацию редакции (например istio-shared-configmap-asm-1-18) и не пытаетесь изменить конфигурацию по умолчанию (например istio-asm-1-18).
  • ConfigMap должен следовать имени istio-shared-configmap-<asm-revision> и находиться в aks-istio-system пространстве имен.
  • Убедитесь, что все поля MeshConfig правильно написаны. Если они не распознаются или не являются частью разрешенного списка, контроль допуска запрещает такие конфигурации.
  • При выполнении обновления канарной версии проверьте определенные конфигурации ConfigMap, чтобы убедиться, что конфигурации существуют для версий, развернутых в кластере.
  • Некоторые MeshConfig варианты, такие как accessLogging, могут увеличить потребление ресурсов Envoy, а некоторые из этих параметров могут снизить использование ресурсов плоскости данных Istio. Также рекомендуется использовать discoverySelectors поле в MeshConfig, чтобы облегчить потребление памяти для Istiod и Envoy.
  • concurrency Если поле в СеткеConfig неправильно настроено и установлено равным нулю, это приводит к тому, что Envoy будет использовать все ядра ЦП. Вместо этого, если это поле не задано, количество рабочих потоков для выполнения автоматически определяется на основе запросов и ограничений ЦП.
  • Условия гонки pod и бокового автомобиля, в которых приложение начинается до устранения holdApplicationUntilProxyStarts проблем с помощью поля в MeshConfig.