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


Устранение неполадок с надстройкой сетки службы Istio MeshConfig

В этой статье описывается устранение неполадок, возникающих при использовании MeshConfig для настройки надстройки сетки службы Istio для службы Microsoft Azure Kubernetes (AKS).

Конфигурация общей конфигурации ConfigMap

Надстройка Istio MeshConfig позволяет настроить определенные параметры на уровне сетки. Для этого создайте локальную карту ConfigMap в aks-istio-system пространстве имен. Затем плоскость управления Istio объединяет эту карту ConfigMap с ConfigMap по умолчанию. (Если между параметрами существует конфликт, приоритет имеют параметры по умолчанию.) Такой подход называется общей конфигурацией ConfigMap.

Создайте ConfigMap с именем istio-shared-configmap-<asm-revision> в aks-istio-system пространстве имен. Например, если используется редакция asm-1-18, следует присвоить ConfigMap istio-shared-configmap-asm-1-18имя . Затем укажите конфигурацию сетки в mesh поле data раздела, как показано в следующем файле YAML ConfigMap:

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.

Обновления canary

Прежде чем приступить к обновлению канареек, следуйте указаниям по настройке и обновлению сетки , чтобы создать второй общий файл ConfigMap для новой редакции уровня управления в aks-istio-system пространстве имен.

Если новый ConfigMap не был создан до начала обновления, все функции, настроенные общим ConfigMap, не будут доступны. Чтобы устранить эту проблему, создайте отсутствующий файл ConfigMap для соответствующей редакции и скопируйте соответствующие поля из предыдущего общего файла ConfigMap.

Дополнительные сведения см. в разделах Обновление надстройки сетки службы на основе Istio для Службы Azure Kubernetes и Надстройка сетки службы Istio с дополнительными исправлениями.

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

Надстройка Istio определяет поля MeshConfig как разрешенные и supported, разрешенные, но unsupported, и disallowed. Сведения о допустимых и поддерживаемых полях MeshConfig для надстройки и обзор различных уровней поддержки см. в статье Настройка надстройки сетки службы на основе Istio для службы Azure Kubernetes. Если поля, упомянутые в вышестоящей документации по Istio , не отображаются в списке разрешений для надстройки, эти поля запрещены.

Контрольный список для устранения неполадок

Шаг 1. Убедитесь, что вы изменяете правильную конфигурацию ConfigMap

  • Убедитесь, что вы настраиваете общую карту ConfigMap (например, istio-shared-configmap-asm-1-17) и не изменяете значение ConfigMap по умолчанию (например, istio-asm-1-17).
  • Убедитесь, что общая конфигурация ConfigMap указывает на правильную редакцию в заголовке.

Шаг 2. Удаление отступов табуляции из определения MeshConfig в общей конфигурации ConfigMap

В определении MeshConfig в общей конфигурации ConfigMap (в разделе data.mesh) убедитесь, что вместо вкладок используются пробелы. Удалите все отображаемые символы табуляции.

Шаг 3. Убедитесь, что поля MeshConfig допустимы

Если поля нераспознаны или не включены в список разрешенных MeshConfig, обновления в MeshConfig отклоняются. Проверьте, разрешены ли нужные поля MeshConfig, и убедитесь, что поля написаны правильно.

Шаг 4. Предотвращение перегрузки CoreDNS

Проблемы, связанные с перегрузкой CoreDNS, могут потребовать изменения определенных параметров DNS Istio, таких как dnsRefreshRate поле в определении Istio MeshConfig.

Шаг 5. Устранение проблем с потреблением памяти

Если в Envoy используется большое потребление памяти, проверьте параметры Envoy для сбора статистических данных. Если вы настраиваете метрики Istio с помощью MeshConfig, помните, что некоторые метрики могут иметь высокую кратность и, следовательно, привести к более высокому объему памяти.

Рекомендуется использовать discoverySelectors поле в определении MeshConfig, чтобы уменьшить потребление памяти для Istiod и Envoy. Дополнительные сведения см. в разделе Общие сведения об устранении неполадок с надстройкой сетки службы Istio.

Шаг 6. Бесплатные ядра ЦП

Если используются все ядра ЦП, concurrency поле в определении MeshConfig может быть неправильно настроено. Если это поле равно нулю, Envoy использует все ядра ЦП. В этом случае удалите из concurrency определения MeshConfig. concurrency Если поле не настроено, количество используемых ядер ЦП определяется запросами ЦП и ограничениями.

Шаг 7. Исправление условий гонки pod и sidecar

Если модуль pod приложения запускается до запуска бокового модуля Envoy, приложение может перестать отвечать на запросы или перезапускаться. Инструкции по устранению этой проблемы см. в статье Pod или контейнеры начинаются с проблем с сетью, если istio-proxy не готов. В частности, можно задать holdApplicationUntilProxyStarts в поле defaultConfig MeshConfig значение , true чтобы предотвратить эти условия гонки.

Ссылки

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

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

Заявление об отказе от ответственности за контактные данные сторонней организации

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

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.